在我正在阅读有关正则表达式的脚本中,它说:
'\b'
击中单词的前边界'\<'
击中单词的开头
那么使用以下有什么区别
\b
超过\<
\b
超过\>
\b
就像\<
并\>
结合:
\<
在单词的开头匹配,\>
在词尾匹配,\b
在单词的开头或结尾匹配,\B
匹配单词的开头或结尾除外。我man grep
告诉我\b
:
符号
\<
和\>
分别匹配单词开头和结尾的空字符串。该符号\b
与单词边缘的空字符串匹配,[...]
所以\bfoo\b
会匹配任何匹配的地方\<foo\>
。
另一方面:正则表达式的变体太多了,很难说出你的\b
.
您的来源似乎是错误的,或者至少是不完整的。\b
匹配任何边框,而不仅仅是前面的边框。报价man grep
:
符号\<
和\>
分别匹配单词开头和结尾的空字符串。该符号\b
与单词边缘的空字符串匹配
grep
's\b
等价于grep
's\(\<\|\>\)
如果您熟悉 Perl 正则表达式,
grep
's\<
等价于 Perl 的(?<!\w)(?=\w)
grep
's\>
等价于 Perl 的(?<=\w)(?!\w)
grep
's\b
等价于 Perl 的\b
grep
's\b
等价于 Perl 的(?:(?<!\w)(?=\w)|(?<=\w)(?!\w))