匹配两个连续辅音的Java正则表达式
我试图只匹配两个连续辅音的字符串。但无论我给myString输入什么,它的计算结果都不会为true,所以我必须假设我的正则表达式的语法有问题。有什么想法吗匹配两个连续辅音的Java正则表达式,java,regex,string,regex-greedy,Java,Regex,String,Regex Greedy,我试图只匹配两个连续辅音的字符串。但无论我给myString输入什么,它的计算结果都不会为true,所以我必须假设我的正则表达式的语法有问题。有什么想法吗 if (Pattern.matches("([^aeiou]&&[^AEIOU]){2}", myString)) {...} 其他信息: myString是最多包含两个字符的子字符串 没有空格,因为此字符串是带有空格分隔符的.split的输出 我不担心特殊字符,因为程序只是连接并打印结果,不过如果您想告诉我如何在您的答案
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}"
[^aeiou]
也匹配非字母字符,因此您应该使用不同的模式:
Pattern rx = Pattern.compile("[bcdfghjklmnpqrstuvwxyz]{2}", Pattern.CASE_INSENSITIVE);
if (rx.matches(myString)) {...}
如果您想对交叉口使用&&
,您可以这样做:
"[a-z&&[^aeiou]]{2}"
要使用字符类交集,需要将语法包装在括号内的表达式中。下面匹配的字符都是小写字母而不是元音
[a-z&&[^aeiou]]{2}
要使用字符类交集,需要将语法包装在括号内的表达式中。下面匹配的字符都是小写字母而不是元音
[a-z&&[^aeiou]]{2}
您是否有一个不是“a”、“e”、“i”、“o”或“u”的字符,后跟“&&&”,后跟一个不是“a”、“e”、“i”、“o”或“u”的字符,后跟相同的内容(即重复两次)?如果您使用的是
&
,则需要将交点放在括号内的表达式中<代码>[a-z&[^aeiou]{2}谢谢大家!我选择dasblink的答案是因为它比较旧,符合我的可选参数,即只记录实际字母,他的演示链接对理解编译模式的用法非常有帮助,最后,我马上完全理解了它。再一次,你们都帮了忙,如果有足够的代表投票,我至少会对其他一些答案这样做。你有一个不是“a”、“e”、“I”、“o”或“u”的字符,后面跟“&&”,后面跟一个不是“a”、“e”、“I”、“o”或“u”的字符,后面跟同样的东西(即重复两次)?如果使用的是&&
,则需要将交点放在括号内的表达式中<代码>[a-z&[^aeiou]{2}谢谢大家!我选择dasblink的答案是因为它比较旧,符合我的可选参数,即只记录实际字母,他的演示链接对理解编译模式的用法非常有帮助,最后,我马上完全理解了它。不过,再一次,你们都帮了忙,如果有足够的支持率,我至少会对其他一些答案这么做。@Pshemo啊,这就是他想做的!这是有道理的。谢谢@啊,这就是他想做的!这是有道理的。谢谢我不知道为什么,但我不喜欢将a
放入字符集中以便立即删除它的想法:/我知道这使正则表达式更容易理解,但仍然[b-z&[^eiou]]
似乎更聪明:)@Pshemo我喜欢你想的方式=)我不知道为什么,但我不喜欢把a
放进字符集中只是为了马上删除它的想法:/我知道这使正则表达式更容易理解,但仍然[b-z&[^eiou]
似乎更聪明:)@Pshemo我喜欢你的思考方式=)