我知道这已被其他帖子所覆盖(我想我已经全部阅读过了),但我无法弄清楚这个简单的问题。在Notepad ++中,我想删除除了许多字符串之外的html文件中的所有文本。在此示例文本中:
text text <text> "text"
text text text
<div class="cit-form-select"><input value="spamr;1/2/99" />
text text text
<div class="cit-form-select"><input value="spamr;1/5/128" />
我想删除除垃圾邮件之间的数据之外的所有内容;和随后的引用,在比赛之间有换行符。最终结果如下:
1/2/99
1/5/128
我怎么能实现这个目标?
答案 0 :(得分:2)
使用以下正则表达式:
^[\s\S]*?\bspamr;([^"]+).*
并替换为$1
。这也将删除空行,但保留文本的其余部分。删除所有文本(包括最后一个文本)的模式效率稍低:
^(?![\s\S]*?spamr;)[\s\S]*\z|^[\s\S]*?\bspamr;([^"]+).*
正则表达式1 :^
使正则表达式在该行的开头查找字符串,[\s\S]*?
将尽可能少地匹配包含换行符在内的所有字符(确保最接近的最右侧匹配),然后\b
确保我们将整个单词spamr
与尾随;
匹配,然后我们捕获除[^"]+
引号之外的1个或多个字符,最后将该行的其余部分与.*
匹配。
正则表达式2 :^(?![\s\S]*?spamr;)[\s\S]*\z
是在spamr;
最后一次出现后删除文本的替代方法。它匹配文本末尾(\z
)之前的任意数量的任何字符,不包含spamr;
(通过在行开头处的锚定前瞻(?![\s\S]*?spamr;)
来实现)。
答案 1 :(得分:1)
查找内容:.*spamr;(.*)".*|.*
替换为:\1