Visual Studio 2003 中的正则表达式替换问题
Posted
技术标签:
【中文标题】Visual Studio 2003 中的正则表达式替换问题【英文标题】:Problem with regular expression replacement in Visual Studio 2003 【发布时间】:2009-06-25 03:34:16 【问题描述】:我正在将一些 LaTeX 文档转换为重组文本,并且在 Visual Studio 2003 中使用正则表达式时遇到了一些问题。我正在尝试使用以下 find/ 将 \emphtext 转换为 *text*替换字符串:
\\emph\([^\]*)\
*\0*
但是,使用这对我将 \emphtext 转换为 *\emphtext* 这不是我所期望的。当我使用 *\1* 而不是 *\0* 时,我得到 ** 作为替换结果。
关于分组规则我遗漏了什么或不了解什么?
谢谢。
【问题讨论】:
你能发布一个示例文本行来确定吗? 您正在尝试匹配一行并将其替换为其他内容。你能发布一个示例行吗? 我正在尝试替换:应用程序中使用的 \emphselection 语言是 ... 与应用程序中使用的 selection 语言是 ... 【参考方案1】:我认为在 VS 正则表达式替换语法中,\0 是整个匹配的字符串,而 \1 是第一个捕获的变量的内容(\2 是第二个,依此类推)。因此:
\0
但是,使用这对我得到 \emphtext 转换为 *\emphtext* 这不是我所期望的。
由此确认,\0 是整个匹配的字符串。
当我使用 *\1* 而不是 *\0* 时,我得到 ** 作为替换结果。
可能您没有匹配捕获类中的任何内容。
为了添加更多细节,定义捕获类的语法(在the docs 中称为标记表达式)使用大括号 ,而不是您在此处使用的括号 ()。可能这将用作“查找”表达式:
\\emph\[^\]*\
【讨论】:
啊...这正是问题所在。非常感谢。以上是关于Visual Studio 2003 中的正则表达式替换问题的主要内容,如果未能解决你的问题,请参考以下文章
使用宏删除 VB.NET 代码中的所有注释和空行的 Visual Studio 正则表达式