Python 正则表达式:匹配连续的标点符号并替换为第一个
我试图删除一些预定义的连续标点符号,并用第一个替换它们。因此:Python 正则表达式:匹配连续的标点符号并替换为第一个,python,regex,Python,Regex,我试图删除一些预定义的连续标点符号,并用第一个替换它们。因此: u、 美国->美国 u、 美国->美国 u、 美国!->u、 美国 你好!!!,->你好 我尝试了以下代码: import re r = re.compile(r'([.,/#!$%^&*;:{}=-_`~()])*\1') n = r.sub(r'\1', "ews by almalki : Tornado, flood deaths reach 18 in U.s., more storms ahead ") print
import re
r = re.compile(r'([.,/#!$%^&*;:{}=-_`~()])*\1')
n = r.sub(r'\1', "ews by almalki : Tornado, flood deaths reach 18 in U.s., more storms ahead ")
print(n)
您只需捕获第一个标点符号并匹配其余标点符号:
([.,/#!$%^&*;:{}=_`~()-])[.,/#!$%^&*;:{}=_`~()-]+
见
请注意,-
必须放在字符类的末尾(或开头),以避免创建范围(或者可以在字符类内部转义)
详细信息:
-使用您定义的标点符号捕获组([,/,/!$%^&*;:{}=\u`~()-])
-1+标点符号[,/#!$%^&*;:{}=\u`~()-]+
好的
@
不包括在内。@MYGz好吧,这就是为什么我使用“你定义的标点符号”的措辞<代码>字符串。标点符号产生!“#$%&'()*+,-./:;?@[\]^{{124}}
符号,字符类看起来像[\!”#$%&'()*+,./:;?@[\]^{{124}-]
然后()。
import re
r = re.compile(r'([.,/#!$%^&*;:{}=_`~()-])[.,/#!$%^&*;:{}=_`~()-]+')
n = r.sub(r'\1', "ews by almalki : Tornado, flood deaths reach 18 in U.s., more storms ahead ")
print(n)