我試圖刪除與我的模式不匹配的字符串的一部分。例如,在正則表達式刪除HTML字符串
<SYNC Start=364><P Class=KRCC>
<Font Color=lightpink>abcd
我想刪除
<P Class=KRCC><Font Color=lightpink>
我該怎麼辦呢?
我試圖刪除與我的模式不匹配的字符串的一部分。例如,在正則表達式刪除HTML字符串
<SYNC Start=364><P Class=KRCC>
<Font Color=lightpink>abcd
我想刪除
<P Class=KRCC><Font Color=lightpink>
我該怎麼辦呢?
只匹配`你的模式'並將其寫入文件或更新數據庫表。那樣的話,你是其餘的刪除。
如果您正在解析的HTML是有效的並且始終遵循已知的標準格式,則可以使用非貪婪模式刪除大部分不需要的內容。
這些示例將不得不根據您用於處理正則表達式的工具/框架進行修改。我不是爲了簡潔而逃避特殊字符。
要匹配任何段落標記:
<p.*?>(.*?)</p>
你會以$ 1(或任何你的語法要求訪問組)取代這些比賽。
使用非貪婪(?)模式來避免意外地匹配兩個不相關的開始/結束標記很重要。例如:
<p.*>(.*)</p>
表現會非常不同。在下面的示例HTML的情況下,它不會正確地匹配兩段:
<p>Lorem ipsum.</p><p>Lorem ipsum.</p>
相反,它會匹配「<p>Lorem ipsum.</p><p>
」作爲第一個部分,這將導致丟失的內容。
如果需要搭配特定類的段落,你可以使用這樣的事情:
<p.*?class="delete".*?>(.*?)</p>
事情變得粘稠是當你開始使用非標準化的HTML工作。例如,這是所有有效的HTML,但清理它的模式會很難看:
<p>no class</p>
<p class=delete>no quotes</p>
<p class="delete">double quotes</p>
<p class='delete'>single quotes</p>
<p>space in closing tag</p >
<p>no closing tag
我們不知道「我的模式」是什麼意思。你需要提供更多信息。 – 2009-06-27 07:24:35