我有一个像这样的字符串:
"asdf {FIELD1}\n adf {FIELD2} asdf adsf{FIELD3}asdf {FIELD4}"
Run Code Online (Sandbox Code Playgroud)
我需要的是一个包含字符串"FIELD1","FIELD2","FIELD3","FIELD4"的数组.换句话说:查找{和}括起来的所有文本并将其放入数组中.使用Python 3.5有一个简单/聪明的方法吗?
只要大括号不能嵌套,就可以轻松使用正则表达式:
>>> import re
>>> re.findall(r"\{(.*?)\}","asdf {FIELD1}\n adf {FIELD2} asdf adsf{FIELD3}asdf {FIELD4}")
['FIELD1', 'FIELD2', 'FIELD3', 'FIELD4']
Run Code Online (Sandbox Code Playgroud)
findall方便地list在输入中创建所有匹配表达式.
该\{(.*?)\}表达式提取花括号之间的数据(你有逃脱,因为他们是在正则表达式语言(重复的组)特殊的,即使他们没有在这个特定背景下理解为这样的,所以它们可以被省略).
括号用于仅提取非大括号部分,并.*?确保您匹配最接近的大括号(非贪婪模式).
这也是很好的做法是使用原始字符串前缀的正则表达式(即使它不是绝对有用这里,它避免了臭名昭著的\1和\b陷阱)