使用re.sub时,Python正则表达式忽略标点符号

时间:2018-04-26 01:00:29

标签: python regex python-3.x

我想说我想将中心这个词转换为中心影院转换为影院为了做到这一点,我写了一个如下所示的正则表达式:

s = "center ce..nnnnnnnnteeeerrrr mmmmeeeeet.eeerrr liiiiIIiter l1t3r"
regex = re.compile(r'(?:((?:(?:[l1]+\W*[i!1]+|m+\W*[e3]+|c+\W*[e3]+\W*n+)\W*t+|t+\W*h+\W*[e3]+\W*a+\W*t+|m+\W*a+\W*n+\W*[e3]+\W*u+\W*v+)\W*)([e3]+)(\W*)(r+))', re.I)
print(regex.sub(r'\1\4\3\2',s)
#prints "centre ce..nnnnnnnntrrrreeee mmmmeeeeet.rrreee liiiiIIitre l1tr3"

为了解决像 c.e.nn.ttteee,/ rr (基本上重复的字符和添加的标点符号)这样的漏洞,我被迫在每个字符之间添加\W*

但是,人们仍然可以使用c.c.e.e.n.n.t.t.e.e.r.r之类的字符串,因为每个字母之间都有标点符号,而不仅仅是不同的字母,因此不匹配。

我想知道是否有一种更聪明的方法可以做到这一点,我可以使用re.sub而不删除空格/标点符号,但仍然匹配。

0 个答案:

没有答案