我正在将一些 LaTeX 文档转换为重组文本,并且在 Visual Studio 2003 中使用正则表达式时遇到了一些问题。我正在尝试使用以下查找/替换字符串将 \emph{text} 转换为 *text*:
\\emph\{([^\}]*)\}
*\0*
然而,使用这对我得到 \emph{text} 转换为 *\emph{text}* 这不是我所期望的。当我使用 *\1* 而不是 *\0* 时,我得到 ** 作为替换结果。
关于分组规则,我缺少什么或不了解什么?
谢谢。
我正在将一些 LaTeX 文档转换为重组文本,并且在 Visual Studio 2003 中使用正则表达式时遇到了一些问题。我正在尝试使用以下查找/替换字符串将 \emph{text} 转换为 *text*:
\\emph\{([^\}]*)\}
*\0*
然而,使用这对我得到 \emph{text} 转换为 *\emph{text}* 这不是我所期望的。当我使用 *\1* 而不是 *\0* 时,我得到 ** 作为替换结果。
关于分组规则,我缺少什么或不了解什么?
谢谢。
我认为在 VS 正则表达式替换语法中,\0 是整个匹配的字符串,而 \1 是第一个捕获的变量的内容(\2 是第二个,依此类推)。所以:
\0
然而,使用这对我得到 \emph{text} 转换为 *\emph{text}* 这不是我所期望的。
因此确认,\0 是整个匹配的字符串。
当我使用 *\1* 而不是 *\0* 时,我得到 ** 作为替换结果。
可能您在捕获类中没有匹配任何内容。
为了添加更多细节,定义捕获类的语法(在文档中称为标记表达式)使用大括号 {},而不是您在此处使用的括号 ()。可能这将用作“查找”表达式:
\\emph\{{[^\}]*}\}