我正在尝试删除一些预定义的连续标点符号,并将其替换为第一个标点符号。因此:
我尝试了以下代码:
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)
答案 0 :(得分:4)
您只需要捕获第一个标点符号并匹配其余标点符号:
([.,/#!$%^&*;:{}=_`~()-])[.,/#!$%^&*;:{}=_`~()-]+
请参阅regex demo
请注意,-
必须放在字符类的结尾(或开头),以便不创建范围(或者可以在字符类中转义)。
<强>详情:
([.,/#!$%^&*;:{}=_`~()-])
- 使用您定义的标点符号捕获组[.,/#!$%^&*;:{}=_`~()-]+
- 1个标点符号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)