非推奨の例外仕様を C++ コードから自動的に削除し、このタスクに sed を使用したいと考えています。
例外指定の形式はthrow
、括弧内に例外 (単語) のリストが続くため、この sed を作成しました。
sed -r 's,throw\s*[(].*[)],,g' foo.cpp
1 回線仕様では機能しますが、複数回線仕様では機能しません。
ドキュメントによると、ドットは改行と一致しないようです: https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html
この回避策を試しましたが、どちらも機能しません (実際には、oneline 仕様でも機能しません)。
sed -r 's,throw\s*[(][\s\S]*[)],,g'
適切に機能させるにはどうすればよいですか?
編集済み:
例外仕様の例:
void foo() throw (std::runtime_error); //oneline
void bar() throw (std::runtime_error,
std::logic_error); //multiline