我试图只匹配具有两个连续辅音的字符串。但无论我给 myString 什么输入,它都不会计算为真,所以我不得不假设我的正则表达式的语法有问题。有什么想法吗?
if (Pattern.matches("([^aeiou]&&[^AEIOU]){2}", myString)) {...}
附加信息:
- myString 是最多两个字符的子串
- 没有空格,因为这个字符串是带有空格分隔符的 .split 的输出
- 我不担心特殊字符,因为程序只是连接并打印结果,不过如果你想告诉我如何在你的答案中包含 [b-z]&&[^eiou] 之类的内容,我将不胜感激
编辑: 在浏览了这些答案并进行了更多测试之后,我最终使用的代码是
if (myString.matches("(?i)[b-z&&[^eiou]]{2}")) {...}
最佳答案
[^aeiou]
也匹配非字母字符,因此您应该使用不同的模式:
Pattern rx = Pattern.compile("[bcdfghjklmnpqrstuvwxyz]{2}", Pattern.CASE_INSENSITIVE);
if (rx.matches(myString)) {...}
如果你想使用 &&
作为交集,你可以这样做:
"[a-z&&[^aeiou]]{2}"
关于Java正则表达式匹配两个连续的辅音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733382/