Visual Studio 2003中正则表达式替换的问题

时间:2009-06-25 03:34:17

标签: regex visual-studio-2003

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

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

*\0*

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

我错过了什么或者我对分组规则有什么理解?

感谢。

1 个答案:

答案 0 :(得分:3)

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

  

\ 0

     

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

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

  

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

可能你没有匹配捕获类中的任何东西。

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

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