删除除特定图案之外的所有内容

时间:2015-12-09 08:01:17

标签: regex notepad++

我有一个包含大量字符串的日志文件。 我想删除此文件中的所有内容(查找和替换),但以phone=开头并以Digits=1

结尾的任何字符串除外

例如:phone=97212345678&step=1&digits=1

要查找该字符串我正在使用(phone=.*digits=1)并且它有效!但是我没有找到正则表达式选择除了这个字符串之外的所有内容并清除它们。

sample file

4 个答案:

答案 0 :(得分:17)

要删除除特定文字以外的任何内容,您需要使用.*(text_you_need_to_keep).*.与换行符匹配。

在Notepad ++中,使用

查找.*(phone=\S*?digits=1).*
替换$1

注意 。匹配换行符选项必须已选中

我在捕获模式中使用\S*?而不是.*,因为您只希望将phone=之间的任何非空白字符与最接近的{{1}匹配}。 digits过于贪婪,可能会在DOTALL选项为ON的情况下延伸多行。

<强>更新

如果要在文本中保留一些多个出现的模式,可以在Notepad ++中使用

.*

替换为.*?(phone=\S*?digits=1) 。有了它,您将删除所有不需要的子字符串,但是在最后一次出现必要的子模式之后

您需要以manaully或

删除最后一个块
$1\n

答案 1 :(得分:1)

如果您使用的是Notepad ++或EditPlus等工具,可以使用以下正则表达式替换:

查找字符串:^phone=(\d+&step=1&)digits=1

替换字符串:\1

答案 2 :(得分:0)

正则表达式找到匹配项:

  。

/ ^电话= +&安培;位数= $ 1 /

要替换匹配以外的文件:

  

/ ^(?电话= +&安培;位数= $ 1)。* /克

答案 3 :(得分:0)

假设您有以下数据:

  

“用于执行计划[ID = 7420],日期为12/06/2018 08:00:00”

您只想从数千行中提取[ID = dddd]部分。 在Notepad ++中,按ctrl + h打开“替换”窗口,检查正则表达式。

查找内容:

.*?(\[ID = \d+\]).*

替换为:

\1

对于您的特定字符串,正则表达式为:

.*?(phone=.*?digits=1).*