c# - 用于在替换包含数字的组中保留数字的正则表达式

标签 c# regex

关于可能的欺骗帖子:Replace only some groups with Regex

这不是骗局,因为帖子用静态文本替换了组,我想要的是通过保留组中的文本来替换组。

我有一些文本包含这样的模式:

\super 1 \nosupersub
\super 2 \nosupersub
...
\super 592 \nosupersub

我想用正则表达式替换它们,使它们变成:

<sup>1</sup>
<sup>2</sup>
...
<sup>592</sup>

因此,我使用以下正则表达式(注意 (\d+) 组):

RegexOptions options = RegexOptions.Multiline; //as of v1.3.1.0 default is multiline
mytext = Regex.Replace(mytext, @"\s?\\super\s?(\d+)\s?\\nosupersub\s", @"<sup>\1</sup>", options);

但是,我没有得到我想要的结果,而是将所有结果替换为 <sup>\1</sup> :

<sup>\1</sup>
<sup>\1</sup>
...
<sup>\1</sup>

如果我尝试使用像 https://www.sublimetext.com 这样的文本编辑器替换正则表达式并且还使用 Python , 没问题。

如何获取 (\d+) 的组替换像那样(保留数字)在C#

最佳答案

许多正则表达式工具使用 \1 表示法来引用替换模式中的组值(语法与反向引用相同)。无论出于何种原因,Microsoft 选择在正则表达式的 .NET 实现中使用 $1 作为表示法。请注意,反向引用在 .NET 中仍然使用 \1 语法。只是替换模式中的语法不同。参见 this page替换部分了解更多信息。

关于c# - 用于在替换包含数字的组中保留数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37143650/

相关文章:

regex - 关于正则表达式重复的具体问题

regex - Golang 正则表达式引用子匹配

regex - 从文件中提取多行

c# - 将 DatePickers "Select a date"更改为加载时的 DisplayDate,如 "02-03-2003"

c# - 无法从 VBA (VB6 ok) 实例化用 C# 编写的 COM 对象

c# - 用于继承/类型区分的自定义模型绑定(bind)器

regex - 是否有与 Perl 兼容的正则表达式来修剪字符串两侧的空格?

c# - VSIX newtonsoft 不在包中 (VS>15.5) 抑制包

c# 和 LINQ,其中集合成员的属性名称是通过函数传递的

java - Java 中的自定义正则表达式替换