弦乐:
this is something that should work (bs) sdfRegEx
\b\(bs\)\b显示没有找到匹配的。为什么?
这里是在Rubular:http://rubular.com/r/jX2Hy6O0XG上
发布于 2017-08-31 21:06:26
没有匹配的原因如下。
单词边界被定义为
(?: # 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
发布于 2017-08-31 21:05:48
之所以不匹配,是因为一个空间与(和)之间以及一个空间之间没有单词边界。
请参阅什么词边界匹配?
有三个不同的位置被限定为单词边界:
如果您需要在未加上word字符的情况下匹配(bs),请使用
(?<!\w)\(bs\)(?!\w)看一个Rubular演示。
详细信息
(?<!\w) -一种与字符串中不带单词字符的位置匹配的负面查找。\(bs\) -一个文字(bs)字符串(?!\w) -一个负面的前瞻性,匹配的位置,没有立即跟随一个字字符。https://stackoverflow.com/questions/45989688
复制相似问题