如何在类似于{{ test_variable }
的字符串中查找所有子字符串?
s = "hi {{ user }}, samle text, {{ test_variable } 2100210121, testing"
我的尝试:
finds = re.findall(r"(\{{ .*?\}$)", s)
但是此正则表达式返回的子字符串以}}
而不是仅以}
结尾,因此我在结果中看到不需要的{{ user }}
答案 0 :(得分:7)
尝试使用以下正则表达式模式:
\{\{\s*([^{} ]+)\s*\}(?=[^}]|$)
这与您使用的类似,但是它在结束}
之后使用正向先行,以确保后面的不是另一个}
或字符串的结尾
\{\{\s*([^{} ]+)\s*\} match desired string as {{ STRING }
(?=[^}]|$) then assert that what follows the final } is NOT
another }, or is the end of the entire string
脚本:
s = "hi {{ user }}, samle text, {{ test_variable } 2100210121, testing"
matches = re.findall(r'{{\s*([^{} ]+)\s*}(?=[^}]|$)', s)
print(matches)
['test_variable']