Regex 跨换行符和多个换行符匹配

Regex 跨换行符和多个换行符匹配,regex,Regex,我有一个包含两个字符值的列表,每个字符值在记事本++中各自的行上。我试图消除重复,但我写的只是匹配相隔一行的字符 因此,如果我的列表如下所示: ME, <- not matched OR, | ME, <- not matched RI, IL, SD, NV, VA, VA, NY, MN, IL, CA, MI, MO, <- match MO, <- match 编辑 ((\w{2})。*(\r\n))(.*\r\n)+\1这似乎更好一些。如果选中“点匹配新行

我有一个包含两个字符值的列表,每个字符值在记事本++中各自的行上。我试图消除重复,但我写的只是匹配相隔一行的字符

因此,如果我的列表如下所示:

ME, <- not matched
OR,   |
ME, <- not matched
RI,
IL,
SD,
NV,
VA,
VA,
NY,
MN,
IL,
CA,
MI,
MO, <- match
MO, <- match
编辑

((\w{2})。*(\r\n))(.*\r\n)+\1
这似乎更好一些。

如果选中“点匹配新行”复选框,您将得到三个匹配项:

ME, <-  matched
OR,   |
ME, <-  matched
RI,
IL, <-  matched
SD,   |
NV,   |
VA,   |
VA,   |
NY,   |
MN,   |
IL, <-  matched
CA,
MI,
MO, <- matched
MO, <- matched
我,

我相信这是你能得到的最接近的

编辑:我撒谎了,哈哈,这会有用的。我不确定你用的是什么语言,但我会给你伪代码

本质上

pattern = "(\w{2}),[^]*(\1),";
compile(pattern);
while(match(pattern, input)){
     //replace input's group 2 with a "" and remove /r/n
}

这将一直运行代码,直到没有重复的代码为止

也许这不是首选答案,但我会编写一个小型python脚本来完成此任务

my_file = """ME,
OR,
ME,
RI,
IL,
SD,
NV,
VA,
VA,
NY,
MN,
IL,""" #replace by my_file = file("filename.txt", "r")
my_set = set()
for line in my_file.splitlines():
    my_set.add(line)
print my_set #just for demonstartion
out_file = file("C:\\Users\\burgert\\Desktop\\outfile.txt", "w")
for s in my_set:
    s += "\n"
    out_file.writelines(s)
out_file.close()

你需要保持比赛的原始顺序吗?能有更多的复制品吗?@TimPietzcker顺序并不重要。除了复制品,你还有什么意思?多谢!我的意思是三份等。-好吧,如果顺序不重要的话,你就不能对行进行排序并删除重复的行吗?@TimPietzcker。我见过一些多达七个的,什么是
[^]
?我得到
(\w{2}),[
[^\1]
表示任何不是
1
的字符,对不起,
[^\1]
表示任何不是八进制\001的字符,并且不是捕获组1的反向引用。
pattern = "(\w{2}),[^]*(\1),";
compile(pattern);
while(match(pattern, input)){
     //replace input's group 2 with a "" and remove /r/n
}
my_file = """ME,
OR,
ME,
RI,
IL,
SD,
NV,
VA,
VA,
NY,
MN,
IL,""" #replace by my_file = file("filename.txt", "r")
my_set = set()
for line in my_file.splitlines():
    my_set.add(line)
print my_set #just for demonstartion
out_file = file("C:\\Users\\burgert\\Desktop\\outfile.txt", "w")
for s in my_set:
    s += "\n"
    out_file.writelines(s)
out_file.close()