Python 正規表現の再帰について
Pythonの正規表現についてです。
int abc( int a ){
if( a > 0 ){
return 1;
}else{
return 0;
}
}
int xyz()
{ return aPtr->type; }
上のようなテキストを以下のように置換しようとしています。
int abc( int a );
int xyz();
そこで次のようなコードを書きました。
pattern = r'(\)\s*\{\s*(?:.+(?R))*.*\s*\})'
content = regex.sub( pattern, r');', content )
ところが意図したとおりに置換せず、結果は以下のようになります。
int abc( int a ){
if( a > 0 );else{
return 0;
}
}
int xyz();
(?:...) は ... にマッチしても終了しないということだと理解しているのですが、外側の ){ } にマッチしないのはどうしてでしょうか?
いろいろパターンを変えてやっていますが、基本的なところが理解できていないため、意図したとおりの結果になりません…