Что такое синтаксис регулярного выражения для использования части согласованного выражения в последующей части поиска?
Итак, например, если у меня есть:
"{marker = 1} некоторый текст {/marker = 1}"
или
"{marker = 2} некоторый текст {/marker = 2}"
Я хочу использовать первую цифру, найденную в шаблоне, чтобы найти вторую цифру. Итак, в
"{marker = 1} {marker = 2} некоторый текст {/marker = 2} {/marker = 1}"
регулярное выражение будет соответствовать 1, а затем 2.
До сих пор я придумал {marker = (\ d)} (. *?) {/marker = (\ d)}, но не знаю, как указать второй \d для ссылки на значение найденный в первом \d.
Я делаю это на С#.
попробовать: {marker=(\d)}(.*?){/marker=(\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}"));