我正在通过regexr.com学习正则表达式,这样我在尝试匹配模式时就不那么尴尬了。
该网站提供了正则表达式声明的每个组件的解释,但我无法确定为什么这个表达式:
/([o])\w+/g
与“to”一词的任何部分都不匹配:
我的理解是[o]
应该匹配字母o
和\w
开关(或者你称之为...标志?选项?)告诉它匹配单词。
我也会受益于一个解释,为什么它只匹配o
和o
中的字母(例如欢迎词中的ome
)而不是整个单词字母o
)。
最后,对+
的解释告诉我,这意味着“匹配前面一个或多个令牌”,而切换这似乎可以控制o
之后是否匹配一个字母,或者全部字中o
之后的字母匹配。对此的澄清将不胜感激。
我为新手问题道歉。
答案 0 :(得分:6)
\w
不是开关,它是单词字符的字符类。 \w
的确切含义取决于系统,但至少必须与[A-Za-z0-9_]
匹配。在"to"
字母"o"
中的示例后面跟一个空格,这是一个非单词字符。由于+
限定符需要"o"
后面的一个或多个单词字符,因此单词"to"
不匹配。
答案 1 :(得分:2)
实际上\b\w+\b
会匹配to
这个词(不在towards
或toe
中)。
\b
是单词边界,而\w
匹配任何单词字符。 \w+
匹配至少一个单词字符,连续无限次
RegexOne是学习正则表达式的良好起点。