正则表达式 - 找到所有3个字母的单词 - 意想不到的结果

时间:2015-02-03 17:32:16

标签: regex

使用regexpal.com练习我的正则表达式。我决定简单地开始并遇到一个问题。

假设您要查找所有3个字母的单词。

\s\w{3}\s

\ s - 空间

\ w - 单词字符

{3} - 3,前一个字符只有3个

\ S

如果我有两个三个字母的单词旁边的例子“和”只有第一个被选中。我认为在正则表达式找到匹配后,它将返回一个字符并开始搜索下一个匹配的字符串。 (在这种情况下,它会“找到”“和”&“the”。

1 个答案:

答案 0 :(得分:3)

(?<=\s)\w{3}(?=\s)

重叠空间。 使用0宽度断言代替。当你在“abc acd”上使用\s\w{3}\s时,正则表达式引擎会消耗abc,因此唯一剩下的就是acd你的正则表达式不匹配。所以使用{{ 1}}只是断言而不是消费。

编辑:

lookaround

也可以使用。

\b\w{3}\b

\b==>assert position at a word boundary (^\w|\w$|\W\w|\w\W)

即使是在开头,中间或结尾,也会找到3个字母的单词。