我想搜索连续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进行此操作?
答案 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,}
答案 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}