我想从我的 c++ 代码中自动删除不推荐使用的异常规范,并尝试使用 sed 来完成此任务。
异常规范格式throw
后面是括号之间的异常(单词)列表,所以我写了这个 sed:
sed -r 's,throw\s*[(].*[)],,g' foo.cpp
它适用于单行规范,但不适用于多行规范。
根据文档,点似乎与换行符不匹配,它必须:https ://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html
我尝试了这种解决方法,但它也不起作用(实际上它甚至不适用于单行规范):
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