一个正则表达式可以实现吗?

use*_*427 3 regex

我有一个字符串

{! 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.哦,小男孩!"]

我仍然对正则表达式缺乏经验,所以我不明白为什么这不起作用.我认为它会匹配'{!' 然后是任意数量的字符,直到你得到一个可能不存在的括号(非贪婪).

Chr*_*our 5

使用积极的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)

这是积极的看法,}如果跟随任何非角色匹配{!.