![](/img/trans.png)
[英]Regex - Would Like to Match Patterns Across Multiple Lines and Consolidate the Lines
[英]Python regex match across multiple lines
我试图跨多行匹配正则表达式模式。 模式以子字符串开头和结尾,这两个子字符串都必须在行的开头。 我可以跨行匹配,但是似乎无法指定结束模式也必须位于行的开头。
示例字符串:
Example=N ; Comment Line One error=
; Comment Line Two.
Desired=
我正在尝试从Example=
匹配到Desired=
。 如果error=
不在字符串中,这将起作用。 但是,当存在时,我匹配Example=N ; Comment Line One 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)
您可以使用
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演示 。
图案细节
(?sm)
re.DOTALL
和re.M
已开启 ^
-一行的开始 Example=
-子字符串 (.*?)
-组1:任意0个以上的字符,并尽可能少 (?=[\\r\\n]+\\w+=|\\Z)
-正向提前,要求存在1+ CR或LF符号,后跟1个或多个单词字符,后跟=
符号,或字符串的结尾( \\Z
)。 参见regex演示 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.