Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式:匹配连续的标点符号并替换为第一个_Python_Regex - Fatal编程技术网

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

我试图删除一些预定义的连续标点符号,并用第一个替换它们。因此:

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

    您只需捕获第一个标点符号并匹配其余标点符号:

    ([.,/#!$%^&*;:{}=_`~()-])[.,/#!$%^&*;:{}=_`~()-]+
    

    请注意,
    -
    必须放在字符类的末尾(或开头),以避免创建范围(或者可以在字符类内部转义)

    详细信息

    • ([,/,/!$%^&*;:{}=\u`~()-])
      -使用您定义的标点符号捕获组
    • [,/#!$%^&*;:{}=\u`~()-]+
      -1+标点符号
    :


    好的
    @
    不包括在内。@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)