用于从 Doxygen 转换为 XMLDoc 的 RegEx

标签 regex visual-studio replace

我有一些带有反斜杠样式 Doxygen 注释的源代码(例如 \brief Text ),并且正在尝试使用 Visual Studio 2013 RegEx 来帮助转换为 XML 文档(例如 <summary>Text</summary> ) em>)。

但是我遇到了问题,它捕获了我想避免的行尾:

这是我当前的查找/替换以及结果:

Find: \\brief.\s(?<brief>.*)[\r?\n]{1}

意图:查找 \brief 、空格、一组字符(捕获为“简短”)、恰好 1 个换行符。

Replace: <summary>${brief}</summary>

意图:用 XML 标记替换捕获的“简短”文本,特别是不包括换行符。

实际结果:

/// \brief  My Brief Text for this function
///

/// <summary> My Brief Text for this function
</summary>///

看来换行符被捕获为标记文本的一部分,尽管我试图避免这种情况。
我试图将 </summary> 结束标记与文本的其余部分放在同一行。

我在这里做错了什么?

最佳答案

要避免将换行符作为捕获的一部分,您可以搜索:

\\brief\s*([^\n\r])+

您可以替换为<summary>$1</summary>

[^\n\r]是一个否定字符类,它匹配既不是换行符也不是回车符的任何字符。通过添加+量词,我们设法匹配整行。

原版有哪些问题?

  1. .\s是第一个问题。点与空格字符匹配,则没有剩余空格可匹配 \s
  2. ?[\r?\n]没有任何作用。它不会使\r可选,但表示文字问号是该位置允许匹配的字符之一。
  3. {1}是多余的,如 [charclass]只匹配一个字符,除非该字符后面跟有量词。

关于用于从 Doxygen 转换为 XMLDoc 的 RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482203/

相关文章:

javascript - 使用 jQuery 获取每个 html 输入的最后一个括号名称

php - 修改脚本中的正则表达式,通过向它们添加跨度类来突出显示文本中的某些单词

regex - 将 AND 子句添加到正则表达式

Javascript - 正则表达式 - 用不同的字符串替换字符串中的所有其他匹配项

.net - RDLC ReportViewer报告中的项目引用

visual-studio-2010 - 扩展 Visual Studio 2010 C# Intellisense?

c++ - 在 Visual Studio 2010 中将输出消息写入 'output window' 的最简单方法?

c# - 替换 <pre> 标签之间的换行符

python - 如何扩展这个搜索和替换 python 脚本以接受来自命令行的变量?

JavaScript 正则表达式 : Not starting with