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