我有一個小問題。我正試圖讓文本超出html元素。 例輸入:如何從正則表達式獲得文本「
I want this text I want this text I want this text <I don't want this text/>
I want this text I wan this text <I don't>want this</text>
有誰知道它是如何可能通過正則表達式?我認爲我可以刪除元素文本。那麼,有沒有人知道這個問題的另一個解決方案?請幫幫我。
我有一個小問題。我正試圖讓文本超出html元素。 例輸入:如何從正則表達式獲得文本「
I want this text I want this text I want this text <I don't want this text/>
I want this text I wan this text <I don't>want this</text>
有誰知道它是如何可能通過正則表達式?我認爲我可以刪除元素文本。那麼,有沒有人知道這個問題的另一個解決方案?請幫幫我。
我同意任何不平凡的東西都應該用HTML解析器來完成(如果你使用.NET,Agility pack是非常好的),但是對於小的需求,因爲這很可能過度殺傷。 然後,HTML解析器再次瞭解HTML充滿的怪癖和邊緣情況。使用正則表達式之前一定要測試好。
在這裏你去
<.*?>.*?<.*?>|<.*?/>
它還正確忽略
<I don't>want this</text>
,而不僅僅是標籤
在C#這成爲
string resultString = null;
resultString = Regex.Replace(subjectString, "<.*?>.*?<.*?>|<.*?/>", "");
更新:切換交替的選項 – buckley
嘗試此
(?<!<.*?)([^<>]+)
說明
@"
(?<! # Assert that it is impossible to match the regex below with the match ending at this position (negative lookbehind)
< # Match the character 「<」 literally
. # Match any single character that is not a line break character
*? # Between zero and unlimited times, as few times as possible, expanding as needed (lazy)
)
( # Match the regular expression below and capture its match into backreference number 1
[^<>] # Match a single character NOT present in the list 「<>」
+ # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
)
"
我會試試它。感謝您的快速響應。 – user35443
代替正則表達式的,這是not suitable for parsing HTML in general(尤其不良HTML),可使用一個HTML解析器像HTML Agility Pack。
什麼是Html Agility Pack(HAP)?
這是一個敏捷的HTML解析器,它構建了一個讀/寫DOM並支持普通的XPATH或XSLT(實際上,您不需要理解XPATH或XSLT就可以使用它,不用擔心)。它是一個.NET代碼庫,允許您解析「離開網頁」的HTML文件。解析器對「真實世界」格式錯誤的HTML非常寬容。對象模型與提出System.Xml非常相似,但是對於HTML文檔(或流)。
所以,你想外面的一切'< ... />' –
是的...但我也想要外面的文字<...> ... – user35443