1

我正在将一些 LaTeX 文档转换为重组文本,并且在 Visual Studio 2003 中使用正则表达式时遇到了一些问题。我正在尝试使用以下查找/替换字符串将 \emph{text} 转换为 *text*:

\\emph\{([^\}]*)\} 

*\0*

然而,使用这对我得到 \emph{text} 转换为 *\emph{text}* 这不是我所期望的。当我使用 *\1* 而不是 *\0* 时,我得到 ** 作为替换结果。

关于分组规则,我缺少什么或不了解什么?

谢谢。

4

1 回答 1

3

我认为在 VS 正则表达式替换语法中,\0 是整个匹配的字符串,而 \1 是第一个捕获的变量的内容(\2 是第二个,依此类推)。所以:

\0

然而,使用这对我得到 \emph{text} 转换为 *\emph{text}* 这不是我所期望的。

因此确认,\0 是整个匹配的字符串。

当我使用 *\1* 而不是 *\0* 时,我得到 ** 作为替换结果。

可能您在捕获类中没有匹配任何内容。

为了添加更多细节,定义捕获类的语法(在文档中称为标记表达式)使用大括号 {},而不是您在此处使用的括号 ()。可能这将用作“查找”表达式:

\\emph\{{[^\}]*}\} 
于 2009-06-25T03:53:43.647 回答