2012-07-14 70 views
1

我有一些<h2> text </p>類型的表達式。使用正則表達式替換結束標籤

如何使用正則表達式搜索</p>標籤並將其替換爲</h2>

+1

您尚未提供有關您所使用的語言/平臺的詳細信息。無論如何 - 通常不推薦使用正則表達式解析HTML。通常使用HTML解析器會更好。 – Oded 2012-07-14 10:03:00

+0

歡迎來到Stack Overflow!請不要使用正則表達式解析HTML,因爲它會[驅動你į̷̷͚̤̤̖̦͍͗̒̈̅̄n̨͖͓̹͍͎͔͈̝͐ͪ͛̄͛ṣ̷̵̞̦ͤ̅̉̋ͪ͑͛ͥ͜a̷̘͖̮͔͎͛̇̏̒͆̆͘n͇͔̤̼͙̩͖̭ͤ͋̉͌͟eͥ͒͆ͧͨ̽͞҉̹͍̳̻͢](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) 。改爲使用[HTML解析器](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)。 – 2012-07-14 10:34:59

+0

@Truth - 像這樣的格式錯誤的標記問題不一定可以通過HTML解析器解決。解析器將失去太多關於畸形的信息。對於這種情況,正則表達式可能是最好的方法。 – Alohci 2012-07-14 10:42:43

回答

-1

您應該瞭解javascript或HTML5上下文中的regular expressions用法。

+0

請不要使用正則表達式解析HTML,因爲它會[驅動你的į̷̷͚̤̤̖̦͍͗̒̈̅̄n̨͖͓̹͍͎͔͈̝͐ͪ͛̄͛ṣ̷̵̞̦ͤ̅̉̋ͪ͑͛ͥ͜a̷̘͖̮͔͎͛̇̏̒͆̆͘n͇͔̤̼͙̩͖̭ͤ͋̉͌͟eͥ͒͆ͧͨ̽͞҉̹͍̳̻͢](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 )。改爲使用[HTML解析器](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)。 – 2012-07-14 10:35:25

+0

w3schools是一個錯誤的和誤導性的網站。您不應該將其用作任何語言的參考。對於PHP,有[PHP手冊](http://php.net),對於JavaScript,有[Mozilla開發者網絡(或MDN)](https://developer.mozilla.org/)。請參閱http://w3fools.com以進一步瞭解爲什麼您不應該使用w3schools。 – 2012-07-14 10:36:04

4

使用這個表達式

<([^>]*)>([^<]*)</[^>]*> 

<$1>$2</$1> 

更換所以對於樣本輸入文本

<h2> text </p> 
<h1> some text </invalidtag> 

你的結果是:

<h2> text </h2> 
<h1> some text </h1> 
+0

請不要使用正則表達式解析HTML,因爲它會[驅動你的į̷̷͚̤̤̖̦͍͗̒̈̅̄n̨͖͓̹͍͎͔͈̝͐ͪ͛̄͛ṣ̷̵̞̦ͤ̅̉̋ͪ͑͛ͥ͜a̷̘͖̮͔͎͛̇̏̒͆̆͘n͇͔̤̼͙̩͖̭ͤ͋̉͌͟eͥ͒͆ͧͨ̽͞҉̹͍̳̻͢](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 )。改爲使用[HTML解析器](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)。你的解決方案其實很聰明,所以我不會倒下,但請不要。 – 2012-07-14 10:36:30

+0

@Truth:這似乎是問題是關於'無效的HTML'。我,不知道正確的HTML解析器的工作。 – Ria 2012-07-14 10:40:31

+0

謝謝!完美的作品!我只編輯了<([^>] *)>([^ <]*)] *>到<([h2]*)>([^ <]*)] *>查找以h2開頭的表達式 – user1525379 2012-07-14 10:56:48