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

Why does /([o])\w+/g not match the word to

提问人:Hack-R 提问时间:3/23/2016 最后编辑:Hack-R 更新时间:3/24/2016 访问量:320

问:

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

该网站提供了正则表达式语句的每个组件的解释,但我无法确定为什么会出现此表达式:

/([o])\w+/g

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

regexr

我的理解是,它应该与字母和开关相匹配(或者你怎么称呼它......旗?选项?告诉它匹配单词。[o]o\w

我也会从解释为什么它只匹配以及单词后面的字母(例如 在单词 Welcome) 而不是包含字母的整个单词中)。ooomeo

最后,的解释告诉我,它的意思是“匹配前面的 1 个或多个标记”,而切换它似乎可以控制是否只匹配 1 个字母,或者单词后面的所有字母都匹配。对此的澄清将不胜感激。+oo

对于新手的问题,我深表歉意。

正则表达式

评论

0赞 BeyelerStudios 3/23/2016
\w是一个单词字符(通常是带下划线的字母数字),因此不匹配,因为后面没有更多的单词字符to/[o]\w+/gto
0赞 Hack-R 3/23/2016
@BeyelerStudios谢谢你,你能再解释一下吗?那么,如果这些字符在匹配的字符之后,则意味着匹配已匹配的单词中的其他字符?
1赞 Felix Kling 3/23/2016
@Hack-R:只是 的简写。就像是 的简写。请参见 regular-expressions.info/shorthand.html\w[a-zA-z0-9_]\d[0-9]

答:

6赞 Sergey Kalinichenko 3/23/2016 #1

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

评论

1赞 Hack-R 3/23/2016
哦,好吧,谢谢,这开始有意义了。所以,即使 is 在单词中,它也不是匹配的,因为要求匹配字符之后的下一个字符在一个单词中?oto\w
0赞 Sergey Kalinichenko 3/23/2016
@Hack-R 是的,没错。
0赞 Hack-R 3/24/2016
完美,谢谢。一旦 7 分钟的最短时间过去,我将接受此作为解决方案。
2赞 Felix Kling 3/24/2016
@Hack-R:可以肯定的是:如果你有表达式,那么只有序列才会匹配,这些序列实际上由一个后跟一个组成。 仅匹配由 后跟任何字符组成的序列 to 、 to 、 to 或 。所以这些会匹配:、、、、,但不是、、等。oaoao\woAZaz09_oCoco5o_o%o+o a
0赞 Hack-R 3/24/2016
@FelixKling噢噢!是的,这确实使它更加清晰。你震撼了我的世界!
2赞 Jan 3/23/2016 #2

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

评论

0赞 Hack-R 3/23/2016
谢谢。我会审查那个网站。如果您可以对问题中的陈述添加更多解释,那会有所帮助,尽管我认为@dasblinkenlight已经为我提供了一些启示。
2赞 ʰᵈˑ 3/23/2016
很好,但为什么。OP 似乎没有掌握正则表达式的某些方面,并在这里寻求理解
0赞 Jan 3/24/2016
@hd ˑ:你说得对。
0赞 Jan 3/24/2016
@Hack-R:是单词边界,同时匹配任何单词字符。 至少匹配一个单词字符,连续无限次。\b\w\w+
0赞 Hack-R 3/24/2016
@Jan啊,好吧,太好了。谢谢你的回答;我会+1。