查找与 3 个连续元音正则表达式匹配的单词
find words that matches the 3 consecutive vowels Regex
text = "Life is beautiful"
pattern = r"[aeiou]{3,}"
result = re.findall(pattern, text)
print(result)
想要的结果:
['beautiful']
我得到的输出:
['eau']
我试过谷歌搜索等...我找到了多个答案,但其中 none 个有效!!
我是正则表达式的新手,所以也许我遇到了问题,但我不确定如何解决这个问题
我已经尝试使用 r"\b[abcde]{3,}\b"
仍然没有所以请帮助!!
您的正则表达式仅捕获 3 个连续的元音,因此您需要扩展它以捕获单词的其余部分。这可以通过查找两个分词之间的字母序列并对序列中的 3 个连续元音使用正向先行来完成。例如:
import re
text = "Life is beautiful"
pattern = r"\b(?=[a-z]*[aeiou]{3})[a-z]+\b"
result = re.findall(pattern, text, re.I)
print(result)
输出:
['beautiful']
对前一个解决方案的一点改进是使用 \w 而不是 a-z 作为字符 类(这将匹配大小写字母)
\b[\w]+[aeiou]{3,}[\w]+\b
干杯!
text = "Life is beautiful"
pattern = r"[aeiou]{3,}"
result = re.findall(pattern, text)
print(result)
想要的结果:
['beautiful']
我得到的输出:
['eau']
我试过谷歌搜索等...我找到了多个答案,但其中 none 个有效!! 我是正则表达式的新手,所以也许我遇到了问题,但我不确定如何解决这个问题
我已经尝试使用 r"\b[abcde]{3,}\b"
仍然没有所以请帮助!!
您的正则表达式仅捕获 3 个连续的元音,因此您需要扩展它以捕获单词的其余部分。这可以通过查找两个分词之间的字母序列并对序列中的 3 个连续元音使用正向先行来完成。例如:
import re
text = "Life is beautiful"
pattern = r"\b(?=[a-z]*[aeiou]{3})[a-z]+\b"
result = re.findall(pattern, text, re.I)
print(result)
输出:
['beautiful']
对前一个解决方案的一点改进是使用 \w 而不是 a-z 作为字符 类(这将匹配大小写字母)
\b[\w]+[aeiou]{3,}[\w]+\b
干杯!