gpt4 book ai didi

c++ - 使用正则表达式在 visual studio 中选择由双换行符分隔的文本 block

转载 作者:行者123 更新时间:2023-11-30 05:31:58 24 4
gpt4 key购买 nike

我正在尝试在 visual studio 中编写一个正则表达式,它将捕获由双换行符分隔的任何文本 block ,因此我可以在它们周围添加 Doxygen 注释。

namespace
{
int a;
int b;

double c;
double d;

bool e;
bool f;
}

成为:

namespace
{
/** @{ */
int a;
int b;
/** @} */

/** @{ */
double c;
double d;
/** @} */

/** @{ */
bool e;
bool f;
/** @} */
}

我已经尝试过 this answer 中的解决方案,但即使未经修改(这并不完全合适),visual studio 也会给我一个错误,即

'The operation could not be completed. The parameter is incorrect.'

我也试过:

(\r?\n){2}(.*\s)+(\r?\n){2}

它会无限期地挂起,因为我认为 (.*\s) 最终会匹配整个文件中所有内容的几乎所有排列。

最佳答案

这是在 Notepad++ 中执行您需要的正则表达式,以及正确的缩进:

(^\s*namespace\b\s*\{|(?!^)\G)((?:\r?\n){2}([ \t]*)|(?:[ \t]*\r?\n)*([ \t]*))(\S[\S\s]*?)(?=[ \t]*(?:\s+\}|(?:\r?\n){2}))

并替换为$1$2/** @{ */\r\n$3$4$5\r\n$3$4/** @} */ .

参见 regex demo和 Notepad++ 演示:

enter image description here

我相信

查找内容:(?<=^\s*namespace\b\s*\{(?:(?!\r?\n[ \t]*}\r?\n)[\S\s])*)((?:\r?\n){2}([ \t]*)|(?:[ \t]*\r?\n)*([ \t]*))(\S[\S\s]*?)(?=[ \t]*(?:\s+\}|(?:\r?\n){2}))
替换为:$1/** @{ */\r\n$2$3$4\r\n$2$3/** @} */

应该also work在 VS2015 S&R 中,但现在,$n反向引用对这个正则表达式根本不起作用,我找不到原因。

关于c++ - 使用正则表达式在 visual studio 中选择由双换行符分隔的文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35342701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com