首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么regex word boundy不适用于这个字符串?

为什么regex word boundy不适用于这个字符串?
EN

Stack Overflow用户
提问于 2017-08-31 20:34:05
回答 2查看 48关注 0票数 0

弦乐:

代码语言:javascript
运行
复制
this is something that should work (bs) sdf

RegEx

代码语言:javascript
运行
复制
\b\(bs\)\b

显示没有找到匹配的。为什么?

这里是在Rubular:http://rubular.com/r/jX2Hy6O0XG

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-31 21:06:26

没有匹配的原因如下。

单词边界被定义为

代码语言:javascript
运行
复制
 (?:                           # Cluster start
      (?:                           # -------
           ^                             # Beginning of string anchor
        |                              # or,
           (?<= [^a-zA-Z0-9_] )          # Lookbehind assertion for a char that is NOT a word
      )                             # -------
      (?= [a-zA-Z0-9_] )            # Lookahead assertion for a char that is IS a word

   |                              # or,

      (?<= [a-zA-Z0-9_] )           # Lookbehind assertion for a char that is IS a word
      (?:                           # -------
           $                             # End of string anchor
        |                              # or,
           (?= [^a-zA-Z0-9_] )           # Lookahead assertion for a char that is NOT a word
      )                             # -------
 )                             # Cluster end

那么,\b\(匹配什么呢?

如果(不是一个单词,那么\b希望左边有一个单词

即。(?<=[a-zA-Z0-9_])(。但它之前的是一个空间,

因此,没有匹配。

)\b ie )(?=[a-zA-Z0-9_])也是如此,但同样,后面是一个空格。

如果您想要一个空白边界,您可以使用

(?<!\S)(..)(?!\S),它确保空格或bos/eos在前后位置。

或者,如果需要确保不使用单词边界,则使用否定的单词边界。

\B(..)\B

票数 2
EN

Stack Overflow用户

发布于 2017-08-31 21:05:48

之所以不匹配,是因为一个空间与()之间以及一个空间之间没有单词边界。

请参阅什么词边界匹配?

有三个不同的位置被限定为单词边界:

  • 在字符串中的第一个字符之前,如果第一个字符是单词字符。
  • 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
  • 在字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。

如果您需要在未加上word字符的情况下匹配(bs),请使用

代码语言:javascript
运行
复制
(?<!\w)\(bs\)(?!\w)

看一个Rubular演示

详细信息

  • (?<!\w) -一种与字符串中不带单词字符的位置匹配的负面查找。
  • \(bs\) -一个文字(bs)字符串
  • (?!\w) -一个负面的前瞻性,匹配的位置,没有立即跟随一个字字符。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45989688

复制
相关文章

相似问题

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