两个正则表达式字符\ b和\<的区别是什么?

时间:2012-04-13 18:45:09

标签: regex bash

在脚本中我正在阅读正则表达式,它说:

  • '\b'点击
  • 一词的前边框
  • '\<'点击
  • 一词的开头

那么使用以下

有什么不同
  • \b超过\<
  • \b超过\>

3 个答案:

答案 0 :(得分:4)

我的man grep告诉我\b

  

符号\<\>分别匹配单词开头和结尾的空字符串。符号\b匹配单词边缘的空字符串,[...]

所以\bfoo\b会匹配\<foo\>匹配的任何地方。

另一方面:有很多正则表达式变体,很难说明你用\b做了什么。

答案 1 :(得分:4)

\b\<\>相结合:

  • \<在单词开头匹配,
  • \>在单词结尾处匹配,
  • \b在单词的开头或结尾处匹配,
  • \B匹配,但在单词的开头或结尾处除外。

答案 2 :(得分:3)

您的来源似乎有误,或者至少不完整。 \b匹配任何边框,而不仅仅是前边框。引用man grep

符号\<\>分别匹配单词开头和结尾的空字符串。符号\b匹配单词
边缘的空字符串
  • grep的{​​{1}}相当于\b的{​​{1}}

如果您熟悉Perl正则表达式,

  • grep的{​​{1}}相当于Perl的\(\<\|\>\)
  • grep的{​​{1}}相当于Perl的\<
  • (?<!\w)(?=\w)的{​​{1}}相当于Perl的grep
  • \>的{​​{1}}相当于Perl的(?<=\w)(?!\w)