Visual Studio 2003 中的正则表达式替换问题
我正在将一些 LaTeX 文档转换为重组文本,并且在 Visual Studio 2003 中使用正则表达式时遇到了一些问题。我正在尝试使用以下查找/替换字符串将 \emph{text} 转换为 *text*:
\\emph\{([^\}]*)\}
*\0*
然而,使用这对我将 \emph{text} 转换为 *\emph{text}* 这不是我所期望的。 当我使用 *\1* 而不是 *\0* 时,我得到 ** 作为替换结果。
我对分组规则缺少什么或不明白什么?
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为在 VS 正则表达式替换语法中, \0 是整个匹配的字符串,而 \1 是第一个捕获变量的内容(\2 是第二个,依此类推)。 所以:
从而确认,\0是整个匹配的字符串。
可能您没有匹配捕获类中的任何内容。
要添加更多详细信息,定义捕获类的语法(在 文档)使用大括号 {},而不是您在此处使用的圆括号 ()。 可能这将用作“查找”表达式:
I think that in the VS regex replacement syntax, \0 is the whole matched string, while \1 is the content of the first captured variable (\2 being the second and so on). Therefore:
Thus confirming, \0 is the whole matched string.
Probably you are not matching anything in the capture class.
To add more detail, the syntax for defined a capture class (called a tagged expression in the docs) uses the braces {}, not parentheses () as you are using here. Probably this will work as the "find" expression: