我经常在我的Linux开发服务器上运行git grep "\<blah\>",但我刚刚发现我无法在Mac(Mac OS X 10.6.8)上使用\<和\>(无法使用=它找不到任何东西)。我试着使用git grep -E "\<blah\>",但无济于事
git grep "\<blah\>"
\<
\>
git grep -E "\<blah\>"
cwxwcias1#
经过一番努力之后,我在BSD邮件列表中找到了this very helpful post,下面是解决方案(尽管相当难看):
git grep "[[:<:]]blah[[:>:]]"
git-grep的-w标志也可以使用,但是有时候你只想匹配单词的开头或结尾。
-w
**更新:**这在OS X 10.9“Mavericks”中已更改。现在您可以使用\<、\>和\b。不再支持[[:<:]]和[[:>:]]。
\b
[[:<:]]
[[:>:]]
piv4azn72#
我猜这是由BSD与Linux grep库引起的。看看git grep的-w(match pattern only at word boundary)选项是否能帮你做到:
$ git grep -w blah
eanckbw93#
你可以使用PCRE支持编译git,并使用git grep -P "\bblah\b"作为单词边界。以下是如何使用OSX Homebrew编译git的指南:http://realultimateprogramming.blogspot.com/2012/01/how-to-enable-git-grep-p-on-os-x-using.html
PCRE
git grep -P "\bblah\b"
92dk7w1h4#
如果你使用-P,请确保使用Git 2.40(Q1 2023):"grep -P"在处理\b和\w等字符时,学会了使用Unicode字符属性查找字符类。参见Carlo Marcelo Arenas Belón ( carenas )(2023年1月8日)。(由Junio C Hamano -- gitster --合并至commit 557d93a,2023年1月27日)
-P
grep -P
\w
carenas
gitster
grep
\{b,w}
签署人:卡洛·马塞洛·阿里纳斯·贝隆确认人:埃瓦尔·阿恩菲约德·比贾马森当为PCRE匹配启用UTF时,相应的标志将添加到pcre2_compile()调用中,但不包括PCRE2_UCP。这防止扩展字符类的含义以包括那些新的有效字符,并因此导致依赖于该扩展的表达式的匹配失败,例如:
pcre2_compile()
PCRE2_UCP
$ git grep -P '\bÆvar'
添加PCRE2_UCP,使\w包含Æ,从而\b可以正确匹配该单词的开头。这对性能的影响估计在20%到40%之间,并通过增加的性能测试显示。这意味着这些模式适用于任何字符:
Æ
'\bhow' '\bÆvar' '\d+ \bÆvar' '\bBelón\b' '\w{12}\b'
4条答案
按热度按时间cwxwcias1#
经过一番努力之后,我在BSD邮件列表中找到了this very helpful post,下面是解决方案(尽管相当难看):
git-grep的
-w
标志也可以使用,但是有时候你只想匹配单词的开头或结尾。**更新:**这在OS X 10.9“Mavericks”中已更改。现在您可以使用
\<
、\>
和\b
。不再支持[[:<:]]
和[[:>:]]
。piv4azn72#
我猜这是由BSD与Linux grep库引起的。
看看git grep的-w(match pattern only at word boundary)选项是否能帮你做到:
eanckbw93#
你可以使用
PCRE
支持编译git,并使用git grep -P "\bblah\b"
作为单词边界。以下是如何使用OSX Homebrew编译git的指南:http://realultimateprogramming.blogspot.com/2012/01/how-to-enable-git-grep-p-on-os-x-using.html
92dk7w1h4#
如果你使用
-P
,请确保使用Git 2.40(Q1 2023):"grep -P
"在处理\b
和\w
等字符时,学会了使用Unicode字符属性查找字符类。参见Carlo Marcelo Arenas Belón (
carenas
)(2023年1月8日)。(由Junio C Hamano --
gitster
--合并至commit 557d93a,2023年1月27日)grep
:正确识别-P
中\{b,w}
的UTF-8字符签署人:卡洛·马塞洛·阿里纳斯·贝隆
确认人:埃瓦尔·阿恩菲约德·比贾马森
当为PCRE匹配启用UTF时,相应的标志将添加到
pcre2_compile()
调用中,但不包括PCRE2_UCP
。这防止扩展字符类的含义以包括那些新的有效字符,并因此导致依赖于该扩展的表达式的匹配失败,例如:
添加
PCRE2_UCP
,使\w
包含Æ
,从而\b
可以正确匹配该单词的开头。这对性能的影响估计在20%到40%之间,并通过增加的性能测试显示。
这意味着这些模式适用于任何字符: