首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在regex中,\b和\>、\<有什么区别?

在regex中,\b和\>、\<有什么区别?
EN

Stack Overflow用户
提问于 2014-12-31 15:23:42
回答 1查看 685关注 0票数 2

现在,我很困惑。

我在regex备忘单上发现了这个

单词边界\<单词的开头>词尾

但是在“掌握正则表达式”一书中,它告诉我

\<词界>词界

\b\> \<在regex中有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-31 15:40:15

摘要

单词边界\<单词边界;具体来说,单词边界后面跟着一个单词;例如,单词的开头>单词边界;具体来说,单词后面是单词边界;即单词的结束。

如果您有一个像"bob“这样的单词,那么\b单词边界模式将返回两个与单词开始和结束相等的零长度匹配。这是有用的,因为可以让您选择字符串中的单词。因此,与\b匹配的字符串"foo bar“有四个空匹配,用于两个单词的起始-结束-结束。

在此基础上,您可以看到\<将只给出单词的开头位置(两个匹配项表示foo的开始和bar的开始),\>给出单词的结尾( foo结尾和bar结束的两个匹配)的位置。

因此,您可以将\b等同于这样的\<

代码语言:javascript
复制
  \< 
is equivalent to
  start-of-word 
is equivalent to
  word-boundary-followed-by-word 
is equivalent to
  \b(?=\w)

我认为您的“掌握正则表达式”一书有点模糊,它将\<\>描述为单词边界,而它们应该更精确,并将它们分别区分为“单词边界(特别是单词的开头)”和“单词的边界(特别是词的结尾)”。

Python示例:

代码语言:javascript
复制
>>> re.compile(r'\b').findall('foo bar')
['', '', '', '']
>>> re.compile(r'\b(?=\w)').findall('foo bar')
['', '']

请注意,python不支持\<\>。这里有一个例子,说明为什么单词边界是有用的。我们可以挑选出一个完整的词,而不是包在foo里面的那个:

代码语言:javascript
复制
>>> re.compile(r'\bBAR\b').findall('foBARo BAR')
['BAR']
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27723018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档