现在,我很困惑。
我在正则表达式备忘单中找到了这个
\b word boundary \< start of word \> end of word
但是在“掌握正则表达式”一书中,它告诉我
\< word boundary \> word boundary
\b
正则表达式和正则表达式有什么区别\>
\<
?
现在,我很困惑。
我在正则表达式备忘单中找到了这个
\b word boundary \< start of word \> end of word
但是在“掌握正则表达式”一书中,它告诉我
\< word boundary \> word boundary
\b
正则表达式和正则表达式有什么区别\>
\<
?
概括
\b word boundary \< word boundary; specifically, word boundary followed by a word; ie, start of word \> word boundary; specifically, word followed by word boundary; ie, end of word
如果你有一个像“bob”这样的单词,那么\b
单词边界模式将返回两个零长度匹配,它们相当于单词的开头和结尾。这很有用,因为可以让您从字符串中挑选出单词。因此,匹配的字符串“foo bar”\b
对于两个单词的 start-end-start-end 有四个空匹配项。
在此基础上,您可以看到这\<
将为您提供单词开头的位置(2 个匹配 foo 的开头和 bar 的开头)和\>
单词的结尾(两个匹配 foo 的结尾和酒吧结束)。
所以你可以等同\b
于\<
这样:
\<
is equivalent to
start-of-word
is equivalent to
word-boundary-followed-by-word
is equivalent to
\b(?=\w)
我认为您的“掌握正则表达式”一书有点模糊,并且将其描述\<
为\>
单词边界,何时应该更精确并将它们区分为“单词边界(特别是单词开头)”和“单词边界(专门用于词尾)”。
Python 示例:
>>> re.compile(r'\b').findall('foo bar')
['', '', '', '']
>>> re.compile(r'\b(?=\w)').findall('foo bar')
['', '']
请注意,python 不支持\<
and \>
。这是一个为什么词边界有用的例子。我们可以挑选出整个单词的 BAR,而不是包裹在 foo 中的那个:
>>> re.compile(r'\bBAR\b').findall('foBARo BAR')
['BAR']