我有一些带有反斜杠样式 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]
是一个否定字符类,它匹配既不是换行符也不是回车符的任何字符。通过添加+
量词,我们设法匹配整行。
原版有哪些问题?
.\s
是第一个问题。点与空格字符匹配,则没有剩余空格可匹配\s
?
在[\r?\n]
没有任何作用。它不会使\r
可选,但表示文字问号是该位置允许匹配的字符之一。{1}
是多余的,如[charclass]
只匹配一个字符,除非该字符后面跟有量词。
关于用于从 Doxygen 转换为 XMLDoc 的 RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482203/