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()