GitHub Code Search 搜索语法

https://cs.github.com/about/syntax

#基础查询结构

一个关键词会匹配文件内容或文件路径。

多个关键词会匹配文件内容,只要包含关键词,就会出现在搜索结果中,不论前后顺序,是否是一个单词(多个关键词之间没有空格)。

还可以使用特定关键字(限定词)指定查询范围:

  • repo:github/github
  • org:github 或者 user:tj
  • language:python
  • path:README.md
  • extension:js
  • symbol:scanbytes
  • content:querystats

还支持逻辑运算符:

  • hello world <=> hello AND world
  • hello OR world
  • hello NOT world
  • “fatal error” NOT path:__testing__
  • (language:ruby OR language:python) AND NOT path:"tests"

还支持正则表达式,要用 // 包围:

\/git.*push\/

会查询所有文件中,git 后面有 push 的部分。git 与 push 之间可以有任意字符。

#精确查找

目标词组要用 "" 包裹 “abc def”。

如果待搜索的字符串中有引号,可以用反斜杠转义 “name = \“Jim\""。

也支持限定词 path:git language:“protocol buffers”。

#仓库和组织限定词

repo:github/linguist

repo:torvalds/linux OR repo:git/git

org:github <=> user:github

目前(2022-01-11)还不支持对仓库名和组织名、用户名的正则表达式全部或部分匹配,所以搜索时,需要输入目标的全部 user[org]/reponame。

#语言限定

language:ruby OR language:cpp OR language:csharp

所有语言都在这里

#路径限定

path:unit_tests

它会查找所有路径中包含目标的部分。

如果只想得到根路径下的内容,用正则表达式:

1
path:/(^|\\/)/README\.md$/

#扩展名限定

extension:.js <=> extension:js

extension:/[jt]s/

查找扩展名为 js 或 ts 的文件。

#Symbol 限定

language:go symbol:WithContext

目前(2022-01-11)只能查找关于 Symbol 的定义,还没有支持所有 Symbol 或语言。关于语言支持 Symbol 搜索的情况可以看 FAQ

同样可以用正则表达式搜索:

language:rust symbol:/^String::to_.*/

#Content 限定

如果只想搜索内容,不包括文件路径,可以这样

content:README.md

它只匹配文件内容中,含有 README.md 的部分。

Layout of comment panels