干净的Python正则表达式

干净的Python正则表达式,python,regex,list,Python,Regex,List,有没有更干净的方法用python编写长正则表达式模式?我在某处见过这种方法,但python中的正则表达式不允许列表 patterns = [ re.compile(r'<!--([^->]|(-+[^->])|(-?>))*-{2,}>'), re.compile(r'\n+|\s{2}') ] 您可以使用详细模式编写更可读的正则表达式。在此模式下: 模式中的空白将被忽略,除非在字符类中或前面有未转换的反斜杠。 当一行包含字符类中的NOTE或前面有

有没有更干净的方法用python编写长正则表达式模式?我在某处见过这种方法,但python中的正则表达式不允许列表

patterns = [
    re.compile(r'<!--([^->]|(-+[^->])|(-?>))*-{2,}>'),
    re.compile(r'\n+|\s{2}')
]

您可以使用详细模式编写更可读的正则表达式。在此模式下:

模式中的空白将被忽略,除非在字符类中或前面有未转换的反斜杠。 当一行包含字符类中的NOTE或前面有未转义反斜杠时,将忽略从最左侧(例如从该行的末尾)开始的所有字符。 以下两种说法是等效的:

a = re.compile(r"""\d +  # the integral part
                   \.    # the decimal point
                   \d *  # some fractional digits""", re.X)

b = re.compile(r"\d+\.\d*")

摘自

的文档,您可以在正则表达式中使用注释,这使它们更具可读性。例如:


尽管@Ayman关于re.VERBOSE的建议是一个更好的主意,但如果您想要的只是您正在展示的内容,那么只需执行以下操作:

patterns = re.compile(
        r'<!--([^->]|(-+[^->])|(-?>))*-{2,}>'
        r'\n+|\s{2}'
)

Python对相邻字符串文本的自动连接与C非常相似,顺便说一句,其余部分将由Python来完成;-

…只要按照Ayman的建议使用re.VERBOSE编译它们。这将是Python的自动连接与Python在括号和括号之间的自动换行相结合。可能值得指出的是,re.X表示VERBOSE模式,相当于编写re.VERBOSE。
patterns = re.compile(
        r'<!--([^->]|(-+[^->])|(-?>))*-{2,}>'
        r'\n+|\s{2}'
)