使用Regex删除除匹配字符串之外的所有文本

时间:2015-08-21 16:05:54

标签: regex notepad++

我知道这已被其他帖子所覆盖(我想我已经全部阅读过了),但我无法弄清楚这个简单的问题。在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

我怎么能实现这个目标?

2 个答案:

答案 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;)来实现)。

enter image description here

答案 1 :(得分:1)

查找内容:.*spamr;(.*)".*|.*

替换为:\1