我正在尝试用 Java 编写一个正则表达式,该表达式将匹配长度为 n 且至少包含 x 个元音的单词。

到目前为止,我想出了以下几点:

// match words that are length 10 and have at least 2 vowels in them
(?=\w{10})(?:[^aeiou\W]*[aeiuo]){2}\w+

这似乎有效,但也匹配长度大于 10 的单词,即:

荒野 - 比赛

volatile - 匹配

声纹 - 匹配(这应该是唯一的匹配)

我希望它能够强制执行 length=10 约束。我怀疑这可能与我在字符串的长度上添加字母(元音)有关,但我不确定。任何帮助/指导将不胜感激。

最佳答案

使用单词边界 \b 来防止匹配发生在单词的中途:

\b(?=\w{10}\b)(?:[^aeiou\W]*[aeiuo]){2,}[^aeiou\W]*\b

这将匹配:

关于java - 长度为 n 的单词中 x 元音的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13432692/

10-11 22:28
查看更多