我有工作的正則表達式:ABC-[0-9]+
組合兩個正則表達式爲一個
我也有一個正則表達式:DEF-[0-9]+
但我不明白如何將兩者結合起來,因此都將
它們匹配我試圖ABC-[0-9]+ | DEF-[0-9]+
但它並沒有真正的工作...
這一切都是在Java中的正則表達式,如果它很重要。
我有工作的正則表達式:ABC-[0-9]+
組合兩個正則表達式爲一個
我也有一個正則表達式:DEF-[0-9]+
但我不明白如何將兩者結合起來,因此都將
它們匹配我試圖ABC-[0-9]+ | DEF-[0-9]+
但它並沒有真正的工作...
這一切都是在Java中的正則表達式,如果它很重要。
如果你想匹配,與任何ABC
或DEF
啓動序列的正則表達式,試試這個:
(ABC|DEF)-[0-9]+
但是,除了從各地|
兩個空格字符,正則表達式應該匹配太:
ABC-[0-9]+|DEF-[0-9]+
這兩個正則表達式匹配同一組字符串。
這不會導致它只能提取ABC和DEF,作爲Java正則表達式嗎? – corsiKa 2010-08-13 13:45:37
@glowcoder:'(ABC | DEF) - [0-9] +'具有捕獲組1,它將捕獲ABC或DEF。組0仍然存在(一如既往),並將整個字符串與短劃線和數字匹配。請參閱http://www.regular-expressions.info/brackets.html或http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#cg。也就是說,當模式具有_EXACTLY ONE_捕獲組時,一些正則表達式框架將執行各種特殊處理,但據我所知,Java不是其中之一。 – polygenelubricants 2010-08-13 13:53:34
@polyg感謝您的有益解釋。 – corsiKa 2010-08-13 14:32:50
你需要將2個正則表達式,使用atomic group:
(?>ABC-[0-9]+)|(?>DEF-[0-9]+)
嘗試(ABC-[0-9]+)|(DEF-[0-9]+)
你說的 「它並沒有真正的工作」 是什麼意思?你能舉一個它不起作用的例子嗎? – 2010-08-13 13:42:26
它只是沒有拿起字符串。事後看來,這可能是由於空格造成的...... – corsiKa 2010-08-13 13:46:15