Java正则表达式匹配两个连续的辅音

时间:2015-02-26 02:20:49

标签: java regex string regex-greedy

我试图只匹配两个连续辅音的字符串。但无论我给myString输入什么,这永远不会评估为true,所以我必须假设我的正则表达式的语法有问题。有什么想法吗?

if (Pattern.matches("([^aeiou]&&[^AEIOU]){2}", myString)) {...}

其他信息:

  • myString是最多两个字符的子字符串
  • 没有空格,因为此字符串是带有空格分隔符的.split的输出
  • 我并不担心特殊字符,因为程序只是连接并打印结果,但如果你想告诉我如何在你的答案中加入类似[bz]&& [^ eiou]的内容我很感激。

编辑: 经过这些答案并再测试一下后,我最终使用的代码是

if (myString.matches("(?i)[b-z&&[^eiou]]{2}")) {...}

2 个答案:

答案 0 :(得分:2)

[^aeiou]也匹配非字母字符,因此您应该使用不同的模式:

Pattern rx = Pattern.compile("[bcdfghjklmnpqrstuvwxyz]{2}", Pattern.CASE_INSENSITIVE);
if (rx.matches(myString)) {...}

如果您想将&&用于交叉路口,可以这样做:

"[a-z&&[^aeiou]]{2}"

Demo.

答案 1 :(得分:2)

要使用字符类交集,您需要将语法包含在括号内的表达式中。下面匹配的字母既是小写字母又不是元音。

[a-z&&[^aeiou]]{2}