C# 使用搜索文本中的值/变量替换/搜索正则表达式

C# 使用搜索文本中的值/变量替换/搜索正则表达式,c#,.net,regex,C#,.net,Regex,在搜索的后续部分使用匹配表达式的一部分的正则表达式语法是什么 例如,如果我有: “{marker=1}一些文本{/marker=1}” 或 “{marker=2}一些文本{/marker=2}” 我想使用在模式中找到的第一个数字来查找第二个数字。所以在 “{marker=1}{marker=2}一些文本{/marker=2}{/marker=1}” 正则表达式将先匹配1,然后匹配2 到目前为止,我已经提出了{marker=(\d)}(.*){/marker=(\d)},但不知道如何指定第二个\d

在搜索的后续部分使用匹配表达式的一部分的正则表达式语法是什么

例如,如果我有:
“{marker=1}一些文本{/marker=1}”

“{marker=2}一些文本{/marker=2}”

我想使用在模式中找到的第一个数字来查找第二个数字。所以在
“{marker=1}{marker=2}一些文本{/marker=2}{/marker=1}”
正则表达式将先匹配1,然后匹配2

到目前为止,我已经提出了{marker=(\d)}(.*){/marker=(\d)},但不知道如何指定第二个\d来引用在第一个\d中找到的值


我在C#中执行此操作。

编号的反向引用只是\n,因此\1应该在这里工作:

Regex re = new Regex(@"\{marker=(\d)\}(.*?)\{/marker=(\1)\}");
// expect to work
Console.WriteLine(re.IsMatch(@"{marker=1}some text{/marker=1}"));
// expect to fail (end marker is different)
Console.WriteLine(re.IsMatch(@"{marker=1}some text{/marker=2}"));
尝试:
{marker=(\d)}(.*){/marker=(\1)}