提问者:小点点

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


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

假设你想找到所有3个字母的单词。

\s\w{3}\s

\s-空间

\w字字符

{3} -3且仅前一个字符的3个

\

如果我有两个三个字母的单词彼此相邻,那么“示例”和“仅选择第一个”。我认为在正则表达式找到匹配项后,它会返回一个字符并开始搜索下一个匹配字符串。(在这种情况下,它将“同时找到”和“


共1个答案

匿名用户

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

重叠空格。改为使用0宽度断言。当您在abc acd上使用\s\w{3}\s时,正则表达式引擎会消耗abc,因此唯一剩下的是正则表达式无法匹配的acd。所以使用lookabout来断言而不使用。

编辑:

\b\w{3}\b

也可以使用。

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

或者

(?:^|(?<=\s))\w{3}(?=\s|$)

这将找到你的3个字母的单词,即使它在开头、中间或结尾。

相关问题