我需要帮助找出一些Python正则表达式

我需要帮助找出一些Python正则表达式,python,regex,Python,Regex,我已经试着把我的头绕到下面,但我的推理仍然有很大的漏洞。什么是?:,有人能给我解释一下吗 rule_syntax = re.compile('(\\\\*)'\ '(?:(?::([a-zA-Z_][a-zA-Z_0-9]*)?()(?:#(.*?)#)?)'\ '|(?:<([a-zA-Z_][a-zA-Z_0-9]*)?(?::([a-zA-Z_]*)'\ '(?::((?:\\\\.|[^\\\\>]+)+)?)?)?>))') ru

我已经试着把我的头绕到下面,但我的推理仍然有很大的漏洞。什么是?:,有人能给我解释一下吗

rule_syntax = re.compile('(\\\\*)'\
    '(?:(?::([a-zA-Z_][a-zA-Z_0-9]*)?()(?:#(.*?)#)?)'\
      '|(?:<([a-zA-Z_][a-zA-Z_0-9]*)?(?::([a-zA-Z_]*)'\
        '(?::((?:\\\\.|[^\\\\>]+)+)?)?)?>))')
rule\u syntax=re.compile(“(\\\*)”\
“(?:(?::([a-zA-Z_][a-zA-Z_0-9]*)?”(?:(?:(*))”\
'|(?:]+)+)?)?)?>))')

有两种工具可以帮助您了解

  • 创建正则表达式的可视表示形式:
  • 是一个允许您输入正则表达式和各种字符串并查看匹配项的工具
  • (?:expr)
    与普通括号
    (expr)
    类似,只是为了以后检索组(反向引用、
    re.sub
    MatchObject.group
    ),以
    ?:
    开头的括号组被排除在外。如果您需要捕获括号中的复杂表达式以对其应用另一个运算符(如
    *
    ),但又不想将其与以后实际需要检索的组混合,则此操作非常有用。”


    ?::
    是简单的
    ?:
    后面跟着一个文字

    “这是你的”链接只是说“麻烦:不匹配的paren”是否还有其他没有意义的部分,或者仅仅是
    ?:
    位是的,我自己也很好奇为什么会在那里。这完全没用。它生成一个空的匹配组。您可以安全地删除它,只要确保在需要时调整您的比赛组号即可。