为什么/([o])\ w + / g与单词不匹配

时间:2016-03-23 15:52:15

标签: regex

我正在通过regexr.com学习正则表达式,这样我在尝试匹配模式时就不那么尴尬了。

该网站提供了正则表达式声明的每个组件的解释,但我无法确定为什么这个表达式:

/([o])\w+/g

与“to”一词的任何部分都不匹配:

regexr

我的理解是[o]应该匹配字母o\w开关(或者你称之为...标志?选项?)告诉它匹配单词。

我也会受益于一个解释,为什么它只匹配oo中的字母(例如欢迎词中的ome)而不是整个单词字母o)。

最后,对+的解释告诉我,这意味着“匹配前面一个或多个令牌”,而切换这似乎可以控制o之后是否匹配一个字母,或者全部字中o之后的字母匹配。对此的澄清将不胜感激。

我为新手问题道歉。

2 个答案:

答案 0 :(得分:6)

\w不是开关,它是单词字符的字符类。 \w的确切含义取决于系统,但至少必须与[A-Za-z0-9_]匹配。在"to"字母"o"中的示例后面跟一个空格,这是一个非单词字符。由于+限定符需要"o"后面的一个或多个单词字符,因此单词"to"不匹配。

答案 1 :(得分:2)

实际上\b\w+\b会匹配to这个词(不在towardstoe中)。
\b是单词边界,而\w匹配任何单词字符。 \w+匹配至少一个单词字符,连续无限次 RegexOne学习正则表达式的良好起点。