【问题标题】:Regex to find partially matched special characters in python正则表达式在python中查找部分匹配的特殊字符
【发布时间】:2020-01-10 21:15:21
【问题描述】:

我有一些字符串,想匹配字符串中的特殊字符(@@,$$,>

a='aaa@@aa;aa$$aaa;aa><aaa;aa....aaa;aaa^aa'

match=re.findall('@@|$$|><|....|^', a)
print(match)

我想关注 o/p:

@@
$$
><
....
^

【问题讨论】:

  • 有些要匹配的字符是正则表达式元字符,带有特殊含义,因此需要转义。试试看:re.findall(r'@@|\$\$|&lt;&gt;|...|\^', a)

标签: python regex string match partial


【解决方案1】:

您的问题实际上只是一个错字,因为您忘记转义像 $^ 这样的正则表达式元字符。但是,我建议另一种方法,re.split:

a = 'aaa@@aa;aa$$aaa;aa><aaa;aa....aaa;aaa^aa'
parts = re.split(r'[^@$<>\^]+', a)[1:-1]
print(parts)

这里的想法是将字符串拆分为任何字符簇other,而不是您要保留的字符。上面的脚本打印:

['@@', '$$', '><', '^']

【讨论】:

    【解决方案2】:

    您可以尝试以下方法:

    >>> a='aaa@@aa;aa$$aaa;aa><aaa;aa....aaa;aaa^aa'
    >>> match=re.findall('@{2}|[$]{2}|><|[.]{4}|\^', a)
    >>> match
    ['@@', '$$', '><', '....', '^']
    

    编辑:当您将特殊字符括在方括号内时,它失去了意义,例如,[.] 将匹配 . 字符。

    【讨论】:

      【解决方案3】:

      你的表情似乎还不错,漏掉了一些东西:

      import re
      
      string = """
      aaa@@aa;aa$$aaa;aa><aaa;aa....aaa;aaa^aa
      aaa@&@aa;aa$&$aaa;aa<>aaa;aa...aaa;aaaaa
      
      """
      
      expression = r'@@|\$\$|><|\^|\.\.\.\.'
      matches = re.findall(expression, string)
      
      print(matches)
      

      输出

      ['@@', '$$', '><', '....', '^']
      

      如果您想探索/简化/修改表达式,它已经 在右上角的面板上进行了解释 regex101.com。如果你愿意,你 也可以在this link看,怎么搭配 针对一些样本输入。


      【讨论】:

        猜你喜欢
        • 2022-11-17
        • 2021-11-03
        • 2013-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-16
        • 1970-01-01
        • 2020-12-28
        相关资源
        最近更新 更多