Notepad++/正则表达式查找开头相同、结尾不同的行

Notepad++/正则表达式查找开头相同、结尾不同的行

因此,我阅读了一些内容,发现 NotePad++ 不使用“正常”正则表达式(开始认为我会回到 SciTE),但这是我的问题:

我有一个导出的数据列表,其中包含一些冗余数据,我正在尝试清理这些数据并将其转换为好的 CSV 以便导入到地址簿中(迁移传真服务器解决方案,旧的解决方案已经过时了,所以这是我能得到的最佳导出解决方案)。

我尝试从每个条目组中删除的行总是以

条目:NAME ~

然后后面有一个 12 位字母数字(似乎是十六进制)代码,每个条目组都有自己的代码。对于一些条目组,在“NAME”后面有一个可读的条目,但这些条目很少,我可以手动删除它们,因此匹配它们并不是一件难事。

因此,我想要做的是找到以 Entry: 开头的每一行,并一直选择到行末。每个组中的每个条目都在单独的行上。然后我将使用“查找和替换”从列表中删除这些行。

更新:输入和输出

Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: John
FamilyName: John
DearName: John
Organisation: Acme 1 Corp
Via: FAX-ANY 1(555) 123-4567

Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: Sam
FamilyName: Sam
DearName: Sam
Organisation: Acme 2 LLC
Via: FAX-ANY 1(555) 890-1234

这里有两个条目组。我想从每个组中删除以“Entry:”开头的行。

答案1

另一个选择是

^Entry: NAME .*

它将查找以 开头的行Entry: NAME以及其后的任何行。

答案2

使用

^Entry: NAME ~\d+$

因为搜索模式似乎按要求工作。

我个人建议使用\d占位符(匹配从0到范围内的任何单个数字9)而不是更通用的.占位符进行匹配。事实上,你甚至应该这样做:

^Entry: NAME ~\d{12}$

指定你期望确切地一行 12 位数字。这样,如果某个条目可能包含您意想不到的内容,您就不会意外地替换它。

如果字符串是十六进制表示法,则可以使用:

^Entry: NAME ~[0-9a-fA-F]{12}$

请注意,我没有检查最后两个示例是否在 Notepad++ 中正常运行,但据我所知,这些都是非常基本的语法。

相关内容