正则表达式替换单行c ++注释

时间:2017-06-14 08:46:21

标签: regex visual-studio comments

我想在我的项目中插入doxygen注释。我希望尽可能自动执行此操作,因此我有了使用正则表达式以及搜索和替换功能的想法。
例如:

int var; //Explanation variable

成:

int var; /**< @brief Explanation variable */

作为奖励,我也不想删除我想要的代码。
我尝试了不同的东西,如

查找:.+;*// .+(找到相关行)
替换:.+;*/**< @brief .+ */

问题是,它没有插入原始文本,它将正则表达式作为纯文本插入,并删除代码打算。 有没有办法正确吗?我已经阅读了很多不同的帖子,但我无法让它发挥作用。

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

^(\s*[^;]+;\s*)\/\/(.*)$

并替换为:

$1/**< @brief $2 */

Regex101Demo

答案 1 :(得分:1)

您需要使用capturing groupbackreferences

查找内容(.+;\s*)//\s*([^\r\n]+)
替换为$1/**< @brief $2 */

请参阅regex demo

<强>详情:

  • (.+;\s*) - 第1组(使用替换模式中$1编号的反向引用访问其值):除了换行符之外的任何一个或多个字符;,然后是0 + whitespaces
  • // - 双/
  • \s* - 0+ whitespaces
  • ([^\r\n]+) - 第2组(使用替换模式中$2编号的反向引用访问其值):除换行符(\n)和回车符之外的任何1 +字符({ {1}})字符(因为\r与.NET正则表达式中的CR(.)匹配)。

VS 2015测试: enter image description here

答案 2 :(得分:0)

我稍微修改了@WiktorStribizew的解决方案,使其更加舒适:

查找:(.+;[^\r\n]\s*)//\s*([^\r\n]+)

我在前面插入[^\r\n],以避免一些特殊情况,例如:

int var;
//Comment for the next function
int function ()