为什么此RegEx无法与`git grep`一起使用?

问题描述 投票:0回答:1

输入为多字节文本。

输入

あいうえお

命令

执行环境是macOS。

git grep '[い]' # -> matched
grep 'あ[い]う' # -> matched

git grep 'あ[い]う' # -> not matched

为什么正常git grep有效时RegEx在grep中不起作用?

regex git
1个回答
0
投票

对我来说似乎很好:

$ 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非常不同(默认情况下,它会翻阅历史记录)

© www.soinside.com 2019 - 2024. All rights reserved.