2013-01-21 98 views
0

從這個可能的輸入我想馬赫的粗體文字:正則表達式匹配順序

類型:驚悚,冒險,動作,2012

類型:驚悚,冒險,動作

我做了這樣的事(?<=Genre:).*(?=(, \d{4})?)

我的問題是,我把這部分(, \d{4})?希望,因爲有匹配", 2012"它會停止在這一點上,但它不會,它只是忽略匹配...

任何意見?

回答

2

.*是貪婪的,所以它會消耗任何東西。由於帶有數字的最後一部分是可選的,因此它們都被.*消耗。

有可能是做這件事的更雄辯的方式,但也許只是有兩個正則表達式:

(?<=Genre:).*(?=(, \d{4}))|(?<=Genre:).* 

如果我是正確的,首先會在與數字的情況下匹配,但它會落空如果這種情況失敗的話,更一般的情況。

編輯:事實上,它可能工作做類似如下:

(?<=Genre:).*?(?=(, \d{4})|$) 

這樣的.*是不貪,但它必須消耗一切都交給無論是數字或其他的字符串的結尾。

+0

這很好用謝謝..如果有任何方法可以用一個正則表達式,我想學習它 – a1204773

+0

@Loclip看我的編輯 - 我認爲應該工作... – Jeff

+0

是的,它的工作原理...好工作!! – a1204773