一致させたいとします:
r'(?P<as>a+)'
正規表現構文のみを使用して、中括弧の間にあるすべての一致を無視するにはどうすればよいですか:
"{aabaa} a" #I just want the last 'a' matched
1 つのオプションは、正規表現を実行する前に中括弧内のものを削除することです。
>>> pat = r'(?P<as>a+)'
>>> string = "{aabaa} a"
>>> m = re.search(pat, re.sub(r'\{.*?\}', '', string))
>>> m.group('as')
'a'
正規表現は、一致しない場合には最適ではありません。しかし、次のようなトリックを使用できます。
a+(?![^{}]*})
しかし、バランスが取れていない場合、これは機能しません{}
。