输入为多字节文本。
あいうえお
执行环境是macOS。
git grep '[い]' # -> matched
grep 'あ[い]う' # -> matched
git grep 'あ[い]う' # -> not matched
为什么正常git grep
有效时RegEx在grep
中不起作用?
对我来说似乎很好:
$ echo 'あいうえお' > afile
$ git add afile
$ grep 'あ[い]う' afile
あいうえお
$ git grep 'あ[い]う'
afile:あいうえお
也许您已将patternType
配置为不使用默认值?
grep.patternType
设置默认的匹配行为。使用basic,extended,fixed或perl的值将相应地启用--basic-regexp,--extended-regexp,--fixed-strings或--perl-regexp选项,而默认值将返回到默认匹配行为。
尝试调用git grep -G
以强制执行基本模式并查看会发生什么。或git config --get grep.patternType
查看是否已将其设置为somethig奇数。
还应注意,git grep仅在“工作树中的跟踪文件,索引文件中注册的Blob或给定树对象中的Blob中查找”。因此,如果将字符串添加到文件中但不将文件添加到索引中,将没有匹配项。
同样,如果字符串在旧的提交中,则与hg grep
非常不同(默认情况下,它会翻阅历史记录)