2010-06-22 103 views
0

我感興趣的是一個正則表達式,它將接受HTML輸入並刪除標籤內的所有屬性,同時使標籤保持原樣。例如,我想這...從標籤中移除屬性的正則表達式

<p class="test" id="TestParagraph">This is some test text right here.</p> 

成爲這個...

<p>This is some test text right here.</p> 

任何幫助將非常感激。

+7

請參閱[本答案](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)。然後,使用真正的HTML解析器而不是認爲正則表達式甚至可以工作。 – 2010-06-22 19:42:03

+0

他們想要做的就是從XML元素中去除屬性。我可能是錯的,但這似乎很簡單。 – Greg 2010-06-22 19:43:37

+6

爲什麼你想使用正則表達式來處理不涉及普通語言的任務?這就像試圖用錘子擰入螺釘。我相信它可以完成一些「完成」的定義,但它不會很漂亮,結果也不會那麼健壯。 – 2010-06-22 19:43:51

回答

5

你真的不想爲此使用正則表達式。 HTML不是regular language,你不能保證你的實際文本不會模仿標籤並被剝離。無論你提出什麼樣的表達方式,都會有破壞它的情況。

我建議您使用Html Agility Pack進行任何您需要執行的HTML操作。

+0

請您詳細說明「您無法保證您的實際文字不會模仿標籤」嗎? – Greg 2010-06-22 19:52:41

+0

內容可能包含「id = something」形式的文本,並且您的正則表達式可能會將其去掉。或者可能包含一個html評論標籤。最終,你可能會構建一個能夠工作99.99%的正則表達式,但我認爲它從來不是正確的方法。 – womp 2010-06-22 20:42:13

+0

今天早上做了一點研究並下載了HTML敏捷包,現在就使用它了,感謝您的輸入。 – huffmaster 2010-06-23 11:43:37

2

HTML不是regular language,因此在嘗試使用正則表達式解析時會遇到問題。正如Greg在上面指出的那樣,您可能需要查看一個HTML解析器來爲您完成這項工作。

享受!

+0

+1點連接常規語言 - 正則表達式 – azatoth 2010-06-22 19:47:52

1

道歉不是not answering the question

你可以用這個

<(\S+)[^>]+> 

開始

<$1> 

當然取代,這將是容易斷裂,如果輸入中包含的腳本或CDATA節,或各種案件。但它可能足夠接近您的輸入設置。

+1

如果OP決定做錯的事情,他們應該至少使用比這更好的表達式...放棄不必要的轉義並簡化標記名稱,並且您可以獲得更具可讀性的'+'。 – 2010-06-22 21:24:17

+0

@彼得,那好吧。 – harpo 2010-06-22 21:35:44

相關問題