如何在GitHub上搜索以获得精确的字符串匹配,包括特殊字符

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

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

177489 次浏览

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

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

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

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

由于搜索代码的复杂性,有一些限制 关于如何执行搜索:

  • 只考虑默认的分支。在大多数情况下,这将是分支。
  • 只有小于384 KB的文件是可搜索的。
  • 只有小于500000个文件的存储库才可以搜索。
  • 在搜索源代码时,必须始终包含至少一个搜索词。例如,搜索language:go无效,而amazing language:go有效。
  • 搜索结果最多只能显示同一文件中的两个片段,但在该文件中可能有更多的结果。
  • <李> 不能在搜索查询中使用以下通配符:
    . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]
    搜索将简单地忽略这些符号

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


尝试Sourcegraph

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

enter image description here


克隆并使用git-grep:

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

git grep "text-to-search"

选择:

我建议你试试ripgrep工具,它快速简单。工作方式类似git-grep,但看起来更好:

rg "text-to-search"

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

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

您可以直接使用谷歌。

这个怎么样?

"your_string_to_search" site::https://github.com
"your_string_to_search" site::https://gist.github.com

如果你的包在debian中,你可以使用他们的代码搜索,它支持正则表达式:https://codesearch.debian.net/

添加到@mrgloom的答案,如果你正在使用谷歌在Github中寻找特定编程语言的代码,你可以在谷歌的搜索栏中做这样的事情:

  • 使用“intext:”搜索操作符说明要查找的特定字符串
  • 添加你感兴趣的编程语言,使用"ext:"操作符(例如:"ext:py", "ext:R", "ext:rb",等等)
  • 在Github中使用“site:”搜索所有的公共回购。

例子:

intext:"%% 2 == 0" ext:R site:github.com

谷歌Results from the example . >

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

例如,不要使用搜索词:

  • repo:my_repo my_image_asset_1.svg

试一试:

  • repo:my_repo "my image asset 1 svg"

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

如果你快速搜索一个特定的回购内,试试:

  • 在查看repo时按.在基于浏览器的VS Code窗口中打开它
  • 在左边的菜单中输入你的搜索词
  • 启用索引
    enter image description here < / >
  1. 在GitHub上打开一个存储库,例如微软/ fluentui
  2. 按“。”;打开VS Code web界面
  3. 进入左侧面板的搜索
  4. 启用索引通过下面的提示搜索栏
  5. Huraaay !🎉精确搜索工作

更新:截至2022年11月,上述解决方案仅适用于在GitHub上登录的情况。

您可以在此链接上启用新的搜索体验预览: https://github.com/features/code-search-code-view/signup . < / p >

然后使用引号进行精确匹配:"system <<-"

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

< p >没有报价: 搜索混乱猴子在GitHub与未引用的条款 < / p > < p >引用: 搜索GitHub上的混乱猴子与字符串 < / p >

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

搜索混乱猴子在GitHub与问号引号字符串

自2021年12月起,你从< >强cs.github.com < / >强开始的搜索可以包含特殊字符

< a href = " https://github。>改进GitHub代码搜索

(从帕维尔Avgustinov)

搜索精确的字符串,支持子字符串匹配和特殊字符,或使用正则表达式(包含在/分隔符中)。

所以"system <<-"应该在那个新的搜索站点上工作。