使用正则表达式匹配辅音字母

时间:2014-09-24 21:33:39

标签: java regex

我想搜索连续3次发生的辅音字母,即#34; happy"比赛,"阅读"不匹配

我可以使用此代码

来完成此操作
String str;
if (str.matches("\\S*([b-df-hj-nq-tv-z]){3,}\\S*"))
    System.out.println("yes");
else
    System.out.println("NO");

此代码已经有效,但除了[a,e,i,o,u]之外,是否可以使用匹配a-z进行此操作?

3 个答案:

答案 0 :(得分:5)

  除了[a,e,i,o,u]

之外,

匹配a-z

您可以尝试使用[a-z&&[^aeiou]]&&是集合的交集,因此它就像a-z与不是a,e,i,o,u的字符的交集。

答案 1 :(得分:2)

在Java中,您可以使用此正则表达式,即a through z except a, e, i, o, u

(?i)([a-z&&[^aeiou]]){3,}

RegEx Demo

Java Documentation

答案 2 :(得分:0)

这是类减法。

这样做很简单。在内部就是这样做的。
在外部,你不会犯错误。

 # "(?i)(?=[^aeiou]{3})[a-z]{3}"

 (?i)
 (?= [^aeiou]{3} )
 [a-z]{3} 

或者你可以改变它以获得更好的性能,具体取决于你期望的主要文本。

 # "(?i)(?=[a-z]{3})[^aeiou]{3}"

 (?i)
 (?= [a-z]{3} )
 [^aeiou]{3}