现在,我很困惑。
我在regex备忘单上发现了这个
单词边界\<单词的开头>词尾
但是在“掌握正则表达式”一书中,它告诉我
\<词界>词界
\b和\> \<在regex中有什么区别?
发布于 2014-12-31 15:40:15
摘要
单词边界\<单词边界;具体来说,单词边界后面跟着一个单词;例如,单词的开头>单词边界;具体来说,单词后面是单词边界;即单词的结束。
如果您有一个像"bob“这样的单词,那么\b单词边界模式将返回两个与单词开始和结束相等的零长度匹配。这是有用的,因为可以让您选择字符串中的单词。因此,与\b匹配的字符串"foo bar“有四个空匹配,用于两个单词的起始-结束-结束。
在此基础上,您可以看到\<将只给出单词的开头位置(两个匹配项表示foo的开始和bar的开始),\>给出单词的结尾( foo结尾和bar结束的两个匹配)的位置。
因此,您可以将\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不支持\<和\>。这里有一个例子,说明为什么单词边界是有用的。我们可以挑选出一个完整的词,而不是包在foo里面的那个:
>>> re.compile(r'\bBAR\b').findall('foBARo BAR')
['BAR']https://stackoverflow.com/questions/27723018
复制相似问题