2010-08-13 58 views
0

我有工作的正則表達式:ABC-[0-9]+組合兩個正則表達式爲一個

我也有一個正則表達式:DEF-[0-9]+

但我不明白如何將兩者結合起來,因此都將

它們匹配

我試圖ABC-[0-9]+ | DEF-[0-9]+但它並沒有真正的工作...

這一切都是在Java中的正則表達式,如果它很重要。

+1

你說的 「它並沒有真正的工作」 是什麼意思?你能舉一個它不起作用的例子嗎? – 2010-08-13 13:42:26

+0

它只是沒有拿起字符串。事後看來,這可能是由於空格造成的...... – corsiKa 2010-08-13 13:46:15

回答

7

如果你想匹配,與任何ABCDEF啓動序列的正則表達式,試試這個:

(ABC|DEF)-[0-9]+ 

但是,除了從各地|兩個空格字符,正則表達式應該匹配太:

ABC-[0-9]+|DEF-[0-9]+ 

這兩個正則表達式匹配同一組字符串。

+0

這不會導致它只能提取ABC和DEF,作爲Java正則表達式嗎? – corsiKa 2010-08-13 13:45:37

+0

@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

+0

@polyg感謝您的有益解釋。 – corsiKa 2010-08-13 14:32:50

0

你需要將2個正則表達式,使用atomic group

(?>ABC-[0-9]+)|(?>DEF-[0-9]+)

0

嘗試(ABC-[0-9]+)|(DEF-[0-9]+)