2014-09-25 94 views
-1

在我的生活中,我對正則表達式的工作很少。因此,當我正在學習這個問題時,請帶我一個新手。由於某種原因導致的正則表達式崩潰

我已經做了一個正則表達式來從URL列表中獲取特定的網址。

下面的列表:

http://www.xxxx.com/us/en/brothers---sisters/one/maria-lang-1-c671030p2313063.html 
http://www.xxxx.com/us/en/lookbook-c471503.html 
http://www.xxxx.com/us/en/pictures-c496502.html 
http://www.xxxx.com/us/en/woman/shoes/high-heels-c269195.html 
http://www.xxxx.com/us/en/woman/handbags-c269200.html 
http://www.xxxx.com/us/en/woman/handbags/messenger-bags-c269202.html 

我正則表達式:

(us\/en\/)^(lookbook)|^(brothers---sisters)|^(pictures)[a-z0-9\-\/]*(c\d+(p\d+)?).html 

我不想:僅提取前三個網址,但這個表達式崩潰時我在線測試儀上測試。雖然,我已經知道,當我從正則表達式中刪除第一個'^'運算符時。它至少運行沒有崩潰,但當然我沒有得到相關的結果。

我一直在敲我的頭很長一段時間,但無法找到任何答案關於我的概率。請幫忙。

+0

這裏有點問題,'^'表示行的開始,你不能在匹配的中間使用它。沒有它你的正則表達式是正確的,請參閱http://regex101.com/r/gU3aB5/1 – Tensibai 2014-09-25 12:55:53

回答

1

您弄丟了插入符^,使用此:

(us\/en\/)(lookbook|brothers---sisters|pictures[a-z0-9\-\/]*c\d+(p\d+)?\.html) 

根據編輯評論:

使用負前瞻匹配的網址,但第3:

(us\/en\/)(?!lookbook|brothers---sisters|pictures[a-z0-9\-\/]*c\d+(p\d+)?\.html) 
+0

我真的很抱歉,我犯了一個錯誤。 我說:「我想得到前三個網址」 我需要說,「我*不希望前三個網址。」這就是爲什麼我使用未使用的脫字符號。 對不起,我在編輯這個問題。 – 2014-09-25 13:34:45

+0

@SarimJavaidKhan:看我的更新。 – Toto 2014-09-25 14:06:43