我正在嘗試編寫一個Java方法,它將確定(true或false)特定字符串是否匹配animal<L_OPERAND,R_OPERAND>
的正則表達式,其中L_OPERAND
可以是以下任何值: dog
,cat
, sheep
和R_OPERAND
可以是以下值中的任何一個:red
,blue
。所有值均爲區分大小寫和空格區分。Java正則表達式不適用於可能值的操作數組
一些例子:
animal<fizz,cat> => false; fizz is not a valid L_OPERAND value
animAl<dog,blue> => false; animAl contains an upper-case char (illegal)
animal<dog,sheep> => false; sheep is not a valid R_OPERAND value
animal<dog, blue> => false; contains whitespace between ',' and 'blue' (no whitesapce allowed)
animal<dog,blue> => true; valid
animal<cat,red> => true; valid
animal<sheep,blue> => true; valid
我迄今爲止最好的嘗試:
public class RegexExperiments {
public static void main(String[] args) {
boolean b = new RegexExperiments().isValidAnimalDef("animal<dog,blue>");
System.out.println(b);
}
public boolean isValidAnimalDef(String animalDef) {
String regex = "animal<[dog,cat,sheep],[red,blue]>";
if(animalDef.matches(regex)) {
return true;
} else {
return false;
}
}
}
雖然我沒有得到任何異常,我得到false
每一個類型的輸入字符串(animalDef
)我通過了。顯然,我的正則表達式很糟糕。任何人都可以發現我要去哪裏?
'[狗,貓,羊]'匹配列出的單個字符中的一個,你可能想要的是一個像'(狗|貓|羊)'的替代品' –
謝謝+1!把它變成答案,綠色支票就是你的! – smeeb
@SebastianProske:如果您願意,您可以發佈答案。 –