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