我试图删除与我的模式不匹配的字符串的一部分。例如,在正则表达式删除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