[英]How to use OR in a regex expression for Java?
我想接受這兩種情況, I_LOVE_TO_CODE.txt
或I_LOVE_TO_CODE_20151125.txt
。 我知道如何分別為每一個做:
^I_LOVE_TO_CODE.txt$
^I_LOVE_TO_CODE_\d{8}\.txt$
但是如何在一個正則表達式中插入OR
條件?
在這種情況下,您不需要|
( OR )運算符,因為它將是一個低效的解決方案。 ^I_LOVE_TO_CODE_\\d{8}\\.txt$|^I_LOVE_TO_CODE\\.txt$
涉及很多回溯。 你可以將它收縮到^(I_LOVE_TO_CODE_\\d{8}\\.txt|I_LOVE_TO_CODE\\.txt)$
(其中錨點適用於兩個子表達式,但只使用一次),或^I_LOVE_TO_CODE(_\\d{8}\\.txt|)$
- 已經好多了, 但是可以使用可選分組完全避免交替。
像這樣使用可選組:
^I_LOVE_TO_CODE(?:_\d{8})?\.txt$
^^^ ^^
請參閱正則表達式演示
(?:_\\d{8})?
表示匹配下划線后跟8位數一次或零次,但不捕獲子串 。 除非你需要使用該值,否則你可以不進行捕獲( (_\\d{8})?)
組。
有關交替操作員和可選項的更多詳細信息,請訪問Regular-Expressions.info 。
在您嘗試匹配的模式的特定情況下,其中一個模式與另一個模式相同,只需“在中間添加一點”,您可以使用可選組,如stribizhev建議的那樣。
如果你試圖匹配兩個(或更多)一般的東西,你可以使用|
運算符,如模式javadoc中所述 :
"^(?:foo|bar|baz)$"
會匹配"foo"
, "bar"
或"baz"
。
我完全不明白你的問題。 在正則表達式中,您可以使用|
確定|
之前的值 或之后的值。
您可以將它們保存在不同的變量中,例如:
String var01= "your route to the .txt file";
String var02= "your route to the .txt file";
String regex= "your regex";
之后,您可以使用if
語句,如:
if((var01||var02).matches(regex)) {
System.out.println("Succes!");
}
else {
System.out.println("Validation failed!");
}
請注意,如果驗證已成功匹配,則.matches
返回true boolean
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.