2014-09-01 44 views
9

我需要做的是确定一个单词是否由除某些字母之外的字母组成。例如,我需要测试单词是否是由英语字母表的字母,除了字母:I,V和XJava正则表达式包括字母表中除字母外的所有字母

目前我对上面这个简单的任务,这漫长的正则表达式:

Pattern pattern = Pattern.compile("[ABCDEFGHJKLMNOPQRSTUWYZ]+"); 

任何你知道从Java正则表达式中排除某些字母的简写方式吗?谢谢。

回答

14

可以使用&&运营商使用减法来创建复合字符类:

String regex = "[A-Z&&[^IVX]]+"; 
3

只需在您的模式中使用负向预览。

Pattern pattern = Pattern.compile("^(?:(?![IVX])[A-Z])+$"); 

DEMO

+0

或者您可以使用这个'^(?:(?= [^ IVX])[A-Z])+ $' – 2014-09-01 15:27:17

+0

这应该是最好的答案。 – 2016-07-14 10:10:36

9

你可以简单地指定字符范围的字符类中:

[A-HJ-UWYZ]+ 
+0

简单,更具可读性。 – moose 2017-10-23 20:30:53

0

使用[A-Z&&[^IVX]]+以排除A-Z范围内的某些字符 - 请参阅Pattern

相关问题