使用regexpal。com来练习我的正则表达式。我决定简单地开始,但遇到了一个问题。
假设你想找到所有3个字母的单词。
\s\w{3}\s
\s-空间
\w字字符
{3} -3且仅前一个字符的3个
\
如果我有两个三个字母的单词彼此相邻,那么“示例”和“仅选择第一个”。我认为在正则表达式找到匹配项后,它会返回一个字符并开始搜索下一个匹配字符串。(在这种情况下,它将“同时找到”和“
(?<=\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个字母的单词,即使它在开头、中间或结尾。