我有一个字符串
{! texthere }
Run Code Online (Sandbox Code Playgroud)
我希望在{!直到结束或你到达第一个}.所以,如果我有
{!text here} {!text here again} {!more text here.好家伙!
我希望["{{text here}","{{text here again}","{!more text here.哦,boy!"]
我认为这会奏效
{!*} ??
但上面的字符串会出现[{{{text here} {!text here again} {!more text here.哦,小男孩!"]
我仍然对正则表达式缺乏经验,所以我不明白为什么这不起作用.我认为它会匹配'{!' 然后是任意数量的字符,直到你得到一个可能不存在的括号(非贪婪).
使用积极的lookbehind (?<={!)[^}]+:
In [8]: import re
In [9]: str="{!text here} {!text here again} {!more text here. Oh boy!"
In [10]: re.findall('(?<={!)[^}]+',str)
Out[10]: ['text here', 'text here again', 'more text here. Oh boy!']
Run Code Online (Sandbox Code Playgroud)
这是积极的看法,}如果跟随任何非角色匹配{!.