【发布时间】:2010-12-27 20:25:31
【问题描述】:
与单词边界相比,正则表达式 (\B) 中的非单词边界是什么?
【问题讨论】:
标签: javascript regex word-boundary boundary word-boundaries
与单词边界相比,正则表达式 (\B) 中的非单词边界是什么?
【问题讨论】:
标签: javascript regex word-boundary boundary word-boundaries
一个词的边界(\b)是一个可以匹配的零宽度匹配:
\w) 和非单词字符 (\W) 之间或在 Javascript 中,\w 的定义是 [A-Za-z0-9_],\W 是其他任何东西。
\b 的否定版本,写成\B,是一个零宽度匹配,上面不成立。因此它可以匹配:
例如,如果字符串是"Hello, world!",那么\b 在以下位置匹配:
H e l l o , w o r l d !
^ ^ ^ ^
而\B 匹配那些\b 不匹配的地方:
H e l l o , w o r l d !
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
【讨论】:
non-word-boundary 的基本目的是创建一个正则表达式:
如果我们在 word char (\w = [a-zA-Z0-9_]) 的开头/结尾,请确保上一个/下一个字符也是 word char,
例如:"a\B." ~ "a\w":
"ab", "a4", "a_", ... 但不是"a ", "a."
如果我们位于 non-word char (\W = [^a-zA-Z0-9_]) 的开头/结尾,请确保上一个/下一个字符也是 non-word char,
例如:"-\B." ~ "-\W":
"-.", "- ", "--", ... 但不是"-a", "-1"
对于word-boundary,它是相似的,但不是确保相邻字符属于同一类 (word char/non-word car),它们需要不同,因此命名为 word's boundary。
【讨论】: