使用转义将python正则表达式转换为多行

时间:2014-03-28 02:05:16

标签: python

我有一个python初学者的问题。如何将这条线分成多行?

SET_CMD = re.compile (r'boot +set-cmd +-s +command\=(?P<pw>.*?)$')

我不想这样做因为pep8抱怨。

SET_CMD = re.compile\
    (r'boot +set-cmd +-s +command\=(?P<pw>.*?)$')

谢谢, 垫

2 个答案:

答案 0 :(得分:1)

做这样的事情:

SET_CMD = re.compile (r'boot +set-cmd +-s'
                      r' +command\=(?P<pw>.*?)$')

这里有两个关键事实:

  • 在括号内提供了隐含的行延续
  • 连续字符串会自动连接

答案 1 :(得分:1)

您可以使用regex verbosity flag将表达式拆分为多行,而不是在parantheses之前拆分。此外,您还可以添加注释,这些注释可能对复杂的表达式很有用。

对于你的例子:

SET_CMD = re.compile(r'''boot\s        # Comment
                         +set-cmd\s    # ...
                         +-s\s
                         +command
                         \=(?P<pw>.*?)$')''', re.VERBOSE)

请注意,我插入了一些\s来匹配空格,因为re.VERBOSE会忽略表达式中的空格和换行符。