我试图在多行中匹配正则表达式模式。模式以子字符串开头和结尾,两者都必须位于一行的开头。我可以匹配不同的行,但我似乎无法指定结束模式也必须在行的开头。
示例字符串:
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}}
答案 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.DOTALL
和re.M
在^
- 开始行Example=
- 子字符串(.*?)
- 第1组:任意0+字符,尽可能少(?=[\r\n]+\w+=|\Z)
- 一个积极的先行者,需要存在1 + CR或LF符号,然后是1个或多个字符,后跟=
符号或字符串结尾({{1} })。请参阅regex demo。