Notepad ++查找字符串'a',删除行和后续行,直到找到字符串'b'


0

我正在编辑GEDCOM文件并删除“不良” GEDCOM标签。我的示例是:-我要搜索“ 2 RIN”,删除该行和所有后续行,直到下一行的第一个字符为“ 1”(1 +一个空格)。带有“ 1”的行不应删除。

一个例子:

现有文件

1 DEAT
2 TYPE D02 Death
2 DATE 1960
2 PLAC Perth
2 RIN 2
2 _PPT @@I1@@
3 TYPE 0 event owner
3 _NSQ 0
1 BURI
2 TYPE D04 Death, Burial
2 PLAC Australia

结果应为:

1 DEAT
2 TYPE D02 Death
2 DATE 1600
2 PLAC Perth
1 BURI
2 TYPE D04 Death, Burial
2 PLAC Australia

Answers:


1

正则表达式^.*RIN.*\r\n(.*\r\n)*(?=^1.*)
或更好的
正则表达式^.*RIN.*\r\n(.*\r\n)*(?=^1 .*)

所以有你的regx。一无所有。或\ r \ n

添加
了解释。^匹配行的开头,然后匹配.*所有字符(尽管不是新行'cos,我们打勾的点与新行框不匹配),然后 (.*\r\n)*匹配所有直到您不匹配的东西之后的行。(?= ^ 1。*)因此,就作为下一个字符立即出现的内容进行前瞻,但是这次不匹配它,而是寻找从1开始的行,然后是空格,然后是其他内容。如果在寻找的时候发现它,然后匹配该位置。

因此,请查看正则表达式标识的所有内容都是匹配的。从正则表达式开始处标识的文本,到标识匹配位置并位于正则表达式末尾的正则表达式前行。

在此处输入图片说明

UPDATE

对上述内容稍作纠正。

A)您要求以“ 2 RIN”开头的行。
B)它需要对* s中的一个进行非贪婪评估,以便它在第一次出现^ 1之前匹配。
C)您需要考虑文件是否带有* nix或Windows行尾。您可以在文档中查找并查找\ r \ n或\ n,然后查看匹配的内容,以查看文件使用的行尾。那是一种方式。您的文件具有* nix行结尾,如notepad ++窗口右下方所示。

所以你想要这个正则表达式 ^2 RIN.*\n(.*\n)*?(?=^1.*)

如果要复制/粘贴,可能会发生Windows行尾,那么您将需要此正则表达式 ^2 RIN.*\r\n(.*\r\n)*?(?=^1.*)

但是,请确保直接打开文件或文件副本,当然,您需要的是\ n版本,即* nix版本,即^2 RIN.*\n(.*\n)*?(?=^1.*) 因为Windows软件正在编写文件,所以正在以* nix样式行结尾。


感谢您的回答,但是我是Notepad ++的一个新手,我似乎在任何地方都找不到手册来解释这些开关等。因此,我有点迷路了。我“复制并粘贴”了您的命令,但使用时它选择了整个文档。但是感谢您的迅速答复,我注意到我的问题已经过编辑-谢谢,其他人都可以理解。-但我没有这样输入:-)
David Banks

感谢您的回答,我是Notepad ++的一个新手,似乎无法在任何地方找到手册来解释参数并在命令行上进行开关以了解正在发生的情况。我“复制并粘贴”了详细信息,它选择了整个文件,包括第一次出现“ 1 RIN”之前的部分。
David Banks

@DavidBanks您是否^在正则表达式的开头添加了。您是否取消了显示.匹配换行符的框?顺便说一句,这是什么看你的问题就像我之前编辑i.imgur.com/sgk0Du6.png 所以当他们输入计算器不显示的问题,它搅乱了格式化,所以我固定的格式,以使其出现当您输入时。
barlop 2015年

1
@DavidBanks让您正在寻找手册。egular表达式不是特定于notepad ++的,我建议进行一个很好的交互式测验以帮助学习它们。例如regexone.com 和作为手动/参考regular-expressions.info
barlop

1
是的,我加入了^并取消了“ .matches new line”框。我粘贴了命令行,甚至自己输入了它,但它仍然选择了85,000行的整个文档。第一次出现“ RIN”在第106行,但它选择了整个文档。帮助!感谢重新输入我的原始信息,当我看到发生了什么时,它变得完全胡说八道-在21世纪,我们似乎已经失去了所见即所得!保留格式肯定是一项基本功能。而且我没有意识到当您点击“返回”时,它会“发送”此消息!
戴维·班克斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.