结合多个冗长的python正则表达式

时间:2019-01-18 03:00:48

标签: python regex

我希望通过组合较小的可重用模式来创建一些python正则表达式,我希望可重用模式使用详细标志。例如,假设我有一个简单的数字模式,一个小写字符

DIGIT_PATTERN = re.compile(r"""
    (?P<my_digit_pattern>        # start named group
      \d+                        # 1 or more integers
    )                            # close named group
    """, re.VERBOSE)
CHAR_PATTERN = re.compile(r"""
    (?P<my_char_pattern>         # start named group
      [a-z]                      # a character
    )                            # close named group
    """, re.VERBOSE)

有没有办法创建一个由上述模式组成的新模式?

NEW_PATTERN = CHAR_PATTERN followed by DIGIT PATTERN followed by CHAR_PATTERN

我要匹配字符串a937267t。上面的示例经过了高度简化,但要点是如何结合使用详细标志定义的正则表达式。

更新

这是我到目前为止所拥有的...可能是唯一的方法....

NEW_PATTERN = re.compile(
    CHAR_PATTERN.pattern + 
    DIGIT_PATTERN.pattern + 
    CHAR_PATTERN.pattern,
    re.VERBOSE
)

我不得不放弃命名组b / c,不能有两个命名相同的组,但是我认为这是我想要的。

1 个答案:

答案 0 :(得分:0)

NEW_PATTERN = re.compile(r"""
    (?P<my_new_pattern>         # start named group
      [a-z]                      # a character
      \d+                        # 1 or more integers
      [a-z]                      # a character
    )                            # close named group
    """, re.VERBOSE)