3

非推奨の例外仕様を 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
4

2 に答える 2