2014-02-07 124 views
0

有人可以請解釋我這個正則表達式的含義嗎?php中的這個正則表達式是什麼意思?

#<hr(.*)class="system-pagebreak"(.*)\/>#iU 

是否有工具將這些常規表達式轉換爲普通單詞?

+1

這個工具非常清楚地說明每一個符號(標記)http://regex101.com/。您可能必須先分隔標誌和分隔符。 – gskema

回答

1

這regex匹配以類「系統正-分頁符」任何自閉小時,但與其他類。

「實際」正則表達式是#
iU落後之間的部分是兩個「標誌」規定,正則表達式將如何表現。 i表示正則表達式不區分大小寫,U表示默認情況下正則表達式限定符是懶惰的。

正則表達式(<hr)的第一部分將作爲一個字符串文字進行評估。它匹配任何組合如:

- <hr 
- <Hr 
- <hR 
- <HR 

然後遵循組評估(標記爲())。評估將是特殊字符.(任何字符),它將被匹配多次。然後

遵循class="system-pagebreak"文字字符串評估。這將比賽這樣的事情:

  • 類=「系統分頁符SomeClass的」
  • 類=「系統分頁符」

後,有再次任何字符儘可能多它來,然後一個字面匹配/>。反斜槓只是用於從正則表達式中去除斜線(因爲它也是一個特殊的字符)。

6

它試圖*匹配任何<hr>標籤有class="system-pagebreak"屬性。

hrclass和閉合/>匹配之間的(.*)段「零個或多個字符」,因此它可以匹配像

<hr id="what" class="system-pagebreak" style="display:block" /> 

#iU在最後的事使其不區分大小寫(i)和非常規(U),以便.*匹配不會佔用整個文檔。

是否有工具將這些常規表達式轉換爲普通單詞?

不是真的?你可以用「正常詞彙」表示什麼?這是一個非常直接的正則表達式,你不能將它「轉化」爲其他任何東西而不會失去其意義。有很多網站的測試正則表達式雖然,如Regex101

*請注意,我說的試圖因爲這是試圖用(X)HTML交互的非常糟糕方式,並確保最終破裂。您應該使用DOM-parser

+0

和這裏來標準鏈接到解析HTML與正則表達式的年齡老答案:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454# 1732454 – Vogel612

0

它將匹配<hr>標籤與class="system-pagebreak"屬性。它還將捕獲小時和班級之間以及第二個引號和標籤末尾之間的任何內容(/>)。 /轉義斜線。我讓它變得不敏感,並且不太認真。英鎊(#)標誌標誌着模式的開始和結束。

0

此正則表達式將<hr直到class="system-pagebreak"見面會後,在同一行中的所有字符匹配,並把它的第一個捕獲小組。然後,它會將所有字符(始終在同一行)放入捕獲組2中,直到/>

目標可能是找到包含類system-pagebreak的自閉合hr標籤。但是這是一個糟糕的模式,因爲它會匹配得這種字符串:

<hr><div class="system-pagebreak"><img src="image.jpg" /> 
相關問題