2014-09-01 46 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

相關問題