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

时间:2009-10-25 07:34:09

标签: c# .net regex

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

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

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

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

到目前为止,我已提出{marker =(\ d)}(。*?){/ marker =(\ d)}}但不知道如何指定第二个\ d来引用该值发现在第一个\ d。

我在C#中这样做。

2 个答案:

答案 0 :(得分:2)

尝试:     {marker=(\d)}(.*?){/marker=(\1)}

答案 1 :(得分:1)

编号的反向引用只是\ 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}"));