关于可能的欺骗帖子: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/