Ago*_* FS 10 regex text-extraction
我有重复精确文本行的文本文件,但我只想要其中一个.想象一下这个文本文件:
AAAAA
AAAAA
AAAAA
BB
BBBBB
BBBBB
CCC
CCC
CCC
Run Code Online (Sandbox Code Playgroud)
我只需要以下四行:
AAAAA
BB
BBBBB
CCC
Run Code Online (Sandbox Code Playgroud)
我使用的是文本编辑器(EmEditor或Notepad ++),它支持RegEx,而不是编程语言,所以我必须使用纯正的表达式.
有帮助吗?
编辑:我检查了hsz提到的另一个帖子,我想说清楚这个是不一样的.虽然两者都需要删除重复的行,但实现它的方式是不同的.我需要纯粹的RegEx,但是其他线程的最佳答案依赖于特定的Notepad ++插件(它甚至不再带有它),所以它甚至不是正则表达式解决方案.第二种情况是正则表达式,它在Notepad ++上有效,但在EmEditor上却没有,我也需要它.所以我不认为我的问题是重复那个问题,虽然这个链接很有用,所以我感谢hsz.
两个几乎相同的选项:
匹配所有不重复的行
(?sm)(^[^\r\n]+$)(?!.*^\1$)
Run Code Online (Sandbox Code Playgroud)
线条将匹配,但要提取它们,你真的想要替换其他线条.
替换所有重复的行
这将在Notepad ++中更好地工作:
搜索: (?sm)(^[^\r\n]*)[\r\n](?=.*^\1)
替换:空字符串
(?s)激活DOTALL模式,允许点跨线匹配(?m)打开多行模式,允许^和$匹配每一行(^[^\r\n]*) 捕获到第1组的行,即^锚断言,我们是在字符串的开头[^\r\n]* 匹配任何不是换行符的字符[\r\n] 匹配换行符(?!.*^\1$)断言我们可以匹配任意数量的字符.*,然后......^\1$ 与第1组相同的行