使用regexpal.com练习我的正则表达式。我决定简单地开始并遇到一个问题。
假设您要查找所有3个字母的单词。
\s\w{3}\s
\ s - 空间
\ w - 单词字符
{3} - 3,前一个字符只有3个
\ S
如果我有两个三个字母的单词旁边的例子“和”只有第一个被选中。我认为在正则表达式找到匹配后,它将返回一个字符并开始搜索下一个匹配的字符串。 (在这种情况下,它会“找到”“和”&“the”。
答案 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个字母的单词。