匹配所有以三个'e'结尾并包含三个'e'的单词的正则表达式
我正在尝试写一个正则表达式,目的是匹配所有单词,这些单词中唯一的元音字母是e,并且字母e的数量正好是三个,我是在用python写这个。之前我尝试写了
(?= e){3}[^aiou]*
但是没有成功。
4 个回答
0
\s[bcdfghjklmnpqrstvwxyz]*e[bcdfghjklmnpqrstvwxyz]*e[bcdfghjklmnpqrstvwxyz]*e[bcdfghjklmnpqrstvwxyz]*\s
2
你可能更好地分开测试这两个部分。
首先使用:
^[^aiou]*$
然后使用:
^([^e]*e[^e]*){3}$
6
你想要找到三个字母“e”,而它们之间的部分不能有元音字母(就是a、e、i、o、u)。你需要的是一个完整的单词,也就是说这个单词的两边都有边界。
所以说,结构是这样的:一个单词边界,零个或多个非元音字母,一个“e”,零个或多个非元音字母,再一个“e”,零个或多个非元音字母,再一个“e”,零个或多个非元音字母,最后是一个单词边界。为了简化这个结构,我们可以把重复的部分组合在一起:一个单词边界,三次出现的模式是(零个或多个非元音字母加一个“e”),然后是零个或多个非元音字母,最后再一个单词边界。
用正则表达式来说就是:\b(?:[^aeiou]*e){3}[^aeiou]*\b
。