Java 匹配两个连续辅音的正则表达式
Java regular expression matching two consecutive consonants
我试图只匹配具有两个连续辅音的字符串。但无论我给 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}"
要使用字符 class 交集,您需要将语法包含在方括号表达式中。下面匹配既是小写字母又不是元音字母的字符。
[a-z&&[^aeiou]]{2}
我试图只匹配具有两个连续辅音的字符串。但无论我给 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}"
要使用字符 class 交集,您需要将语法包含在方括号表达式中。下面匹配既是小写字母又不是元音字母的字符。
[a-z&&[^aeiou]]{2}