10S*_*Tom 2 regex multiline python-3.x
我正在尝试跨多行匹配正则表达式模式。该模式以一个子字符串开始和结束,这两个子字符串都必须在一行的开头。我可以跨行匹配,但我似乎无法指定结束模式也必须在行的开头。
示例字符串:
Example=N ; Comment Line One error=
; Comment Line Two.
Desired=
Run Code Online (Sandbox Code Playgroud)
我正在尝试匹配从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)
Run Code Online (Sandbox Code Playgroud)
我也试过:
config_value = 'Example'
pattern = '^{}=(.*?)(^[A-Za-z]=)'.format(config_value)
match = re.search(pattern, string, re.M | re.DOTALL)
Run Code Online (Sandbox Code Playgroud)
您可以使用
config_value = 'Example'
pattern=r'(?sm)^{}=(.*?)(?=[\r\n]+\w+=|\Z)'.format(config_value)
match = re.search(pattern, s)
if match:
print(match.group(1))
Run Code Online (Sandbox Code Playgroud)
请参阅Python 演示。
图案详情
(?sm)-re.DOTALL并re.M在^ - 一行的开始Example= - 一个子串(.*?) - 第 1 组:任何 0+ 个字符,尽可能少(?=[\r\n]+\w+=|\Z)- 正向前瞻,需要存在 1+ CR 或 LF 符号,后跟 1 个或多个字字符,后跟=符号或字符串结尾 ( \Z)。请参阅正则表达式演示。
| 归档时间: |
|
| 查看次数: |
6766 次 |
| 最近记录: |