Python正则表达式匹配多行

时间:2018-05-02 14:27:08

标签: regex python-3.x multiline

我试图在多行中匹配正则表达式模式。模式以子字符串开头和结尾,两者都必须位于一行的开头。我可以匹配不同的行,但我似乎无法指定结束模式也必须在行的开头。

示例字符串:

Example=

我正在尝试从Desired=error=进行匹配。如果Example=N ; Comment Line One error=不在字符串中,则此方法有效。但是,当它出现时,我匹配config_value = 'Example' pattern = '^{}=(.*?)([A-Za-z]=)'.format(config_value) match = re.search(pattern, string, re.M | re.DOTALL)

config_value = 'Example'
pattern = '^{}=(.*?)(^[A-Za-z]=)'.format(config_value)
match = re.search(pattern, string, re.M | re.DOTALL)

我也尝试过:

{{1}}

1 个答案:

答案 0 :(得分:2)

您可以使用

config_value = 'Example'
pattern=r'(?sm)^{}=(.*?)(?=[\r\n]+\w+=|\Z)'.format(config_value)
match = re.search(pattern, s)
if match:
    print(match.group(1))

请参阅Python demo

模式详情

  • (?sm) - re.DOTALLre.M
  • ^ - 开始行
  • Example= - 子字符串
  • (.*?) - 第1组:任意0+字符,尽可能少
  • (?=[\r\n]+\w+=|\Z) - 一个积极的先行者,需要存在1 + CR或LF符号,然后是1个或多个字符,后跟=符号或字符串结尾({{1} })。

请参阅regex demo