2013-03-19 39 views
0

我正在尋找preg_match_all模式來查找頁面上沒有結尾斜槓的所有網址。正則表達式的網址沒有結尾的斜槓,並排除某些文字的網址

例如:如果我有

a href="/testing/abc/">end with slash 

a href="/testing/test/mnl">no ending slash 

其結果將是2號。解決方法發佈在find pattern for url with no ending slash

我試圖修改提供的模式,以排除具有'圖像'或'.pdf'但沒有運氣的網址。

謝謝。

+0

你已經嘗試過哪一個? – sp00m 2013-03-19 16:53:15

+0

/href=(["])[^\s]+(? user2170712 2013-03-19 16:55:50

+0

在使用任何正則表達式之前,請使用HTML解析器( DOMDocument)解析頁面,然後選出你想要處理的標籤並檢查href/src。 – nhahtdh 2013-03-19 17:06:39

回答

2

這應該滿足您的需求(demo):

href="(?:(?<!images).(?!(?:[.]pdf|/)"))*?" 
  • (?:) =非捕獲GROUPE
  • (?<!images). =任何字符不前面有images
  • .(?!(?:[.]pdf|/)") =任何字符後面沒有.pdf"也不由/"
  • *? = 匹配儘可能短
+0

爲什麼字符類,'[。]'?原來如此。我從來沒有見過任何人逃過字符類的''。整齊。 – 2013-03-19 17:05:26

+0

@ acheong87這是一種逃避'''特殊字符的方法。就像'\ .'一樣,但是我發現它更具可讀性*) – sp00m 2013-03-19 17:07:03

+0

是的,在我評論之後意識到了一秒。非常好的正則表達式;巧妙的方法。 – 2013-03-19 17:09:01

1

我找到了一種方法,通過修改其他問題提供的答案來排除具有.pdf的鏈接。 仍然在看它爲什麼不會與圖像示例相匹配。

href=(['"])[^\s]+(?<![\/]|.pdf)\1 

鏈接到有效的測試http://www.rubular.com/r/jmBVstpGZD

+0

這個正則表達式會拒絕.bmp和.tif。你能找出原因嗎?:) – 2013-03-19 17:04:30

+0

hi zack,how關於也排除具有'圖像'(字符串)的網址嗎? – user2170712 2013-03-19 17:04:34

+0

@ acheong87不,我真的不知道哦,神祕的主人。:p我假設你知道,並可以提供一些推理或可能的原因鏈接。 – Zack 2013-03-19 17:10:55

相關問題