【问题标题】:Regex find contents between curly brackets across line break正则表达式跨换行符查找大括号之间的内容
【发布时间】:2022-01-28 06:41:35
【问题描述】:

假设我有以下字符串:

text="""foo: '{{ .Env.FOO
  }}'
bar: '{{ .Env.BAR }}'
foobar: {{ .Env.FOOBAR }}
"""

我可以很容易地匹配单行案例

import re
found=re.findall("{{ .Env..*?}}", text)

但是我将如何匹配 }} 在第二行的情况?我尝试了以下方法,但与它找到的最后一个 }} 匹配。在第一个 }} 处停止的东西会起作用。

with_line_break=re.findall("{{ .Env..*?\n.*}}", text)
print(with_line_break)

打印:

{{ .Env.FOO
  }}
{{ .Env.BAR }}'
foobar: {{ .Env.FOOBAR }}

【问题讨论】:

    标签: python regex


    【解决方案1】:

    您可以使用标志re.DOTALL

    re.DOTALL

    让 '.' 特殊字符完全匹配任何字符, 包括换行符;没有这个标志,'.' 将匹配除 换行符。对应内联标志(?s)

    found = re.findall("{{ .Env..*?}}", text, re.DOTALL)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-20
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多