我正在尝试删除与我的模式不匹配的字符串的一部分。例如,在
中<SYNC Start=364><P Class=KRCC>
<Font Color=lightpink>abcd
我想删除
<P Class=KRCC><Font Color=lightpink>
我该怎么做?
答案 0 :(得分:3)
您的问题并不表示您需要(或应该使用)正则表达式。如果要删除固定字符串,请执行传统搜索和替换。
答案 1 :(得分:1)
只需匹配“您的模式”并将其写入文件或更新数据库表。这样,你删除其余的。
答案 2 :(得分:1)
如果要解析的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