我可以使用像“system <<-”这样的引号从谷歌中搜索精确匹配。

我如何为GitHub做同样的事情?


当前回答

你可以:从2021年12月起,你从cs.github.com上进行的搜索可以包含特殊字符

改进GitHub代码搜索 (作者:Pavel Avgustinov) 搜索精确的字符串,支持子字符串匹配和特殊字符,或使用正则表达式(包含在/分隔符中)。

所以“system <<-”应该在新的搜索站点上工作。

其他回答

如果你的搜索词是一个包含标点符号的文件名或其他子字符串,让GitHub的代码搜索返回该子字符串的实例的部分解决方案是:(1)用空格替换搜索词中的标点符号字符,(2)将搜索词括在引号中。

例如,不要使用搜索词:

回购:my_repo my_image_asset_1.svg

Try:

Repo:my_repo "my image asset 1 svg"

这可能不是所有情况下的完美解决方案;我想它也可以匹配my-image-asset .svg这样的文件名。但是根据您的用例,它可能“足够好”?

今天我试图在Github上的任何repo中寻找名为logback.xml的文件中的过滤器类的精确匹配。于是我提出了下面这个问题。

"filter class" in:file filename:logback.xml

要启用与引号的精确匹配,您需要在搜索后使用“in:file”修饰符。匹配不是很精确,单词“class”必须跟在单词“filter”后面,但似乎两个单词之间可以有0个或更多的空格或符号字符。

(在2022年之前)你不能。GitHub官方搜索规则:

Due to the complexity of searching code, there are a few restrictions on how searches are performed: Only the default branch is considered. In most cases, this will be the master branch. Only files smaller than 384 KB are searchable. Only repositories with fewer than 500,000 files are searchable. You must always include at least one search term when searching source code. For example, searching for language:go is not valid, while amazing language:go is. At most, search results can show two fragments from the same file, but there may be more results within the file. You can't use the following wildcard characters as part of your search query: . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ] The search will simply ignore these symbols.

更新:GitHub现在支持文字字符串,但你也可以尝试下面一些更强大的方法。


尝试Sourcegraph

对于支持正则表达式的复杂搜索,请尝试Sourcegraph。


克隆并使用git-grep:

Git支持使用Git -grep命令在源代码中搜索。只需克隆一个存储库,并在文件夹中使用命令:

git grep "text-to-search"

选择:

我推荐你试试ripgrep工具,它快速简单。类似于git-grep,但看起来更好:

rg "text-to-search"

你可以使用标准的grep来搜索文件中的任何文本:

grep -r "text-to-search" /repository

你可以:从2021年12月起,你从cs.github.com上进行的搜索可以包含特殊字符

改进GitHub代码搜索 (作者:Pavel Avgustinov) 搜索精确的字符串,支持子字符串匹配和特殊字符,或使用正则表达式(包含在/分隔符中)。

所以“system <<-”应该在新的搜索站点上工作。

从2021年2月11日起,你可以在搜索字符串周围加上引号

没有引用:

报价:

虽然现在可以搜索精确的字符串,但该功能还不支持对特殊字符的搜索。例子: