Regex заменить / поиск с использованием значений / переменных в тексте поиска - PullRequest
2 голосов
/ 25 октября 2009

Каков синтаксис регулярного выражения для использования части сопоставленного выражения в последующей части поиска?

Так, например, если у меня есть:
"{marker = 1} некоторый текст {/ marker = 1}"
или
"{marker = 2} некоторый текст {/ marker = 2}"

Я хочу использовать первую цифру в шаблоне, чтобы найти вторую цифру. Так что в
"{marker = 1} {marker = 2} некоторый текст {/ marker = 2} {/ marker = 1}"
регулярное выражение будет соответствовать 1, а затем 2.

До сих пор я придумал {marker = (\ d)} (. *?) {/ Marker = (\ d)}, но не знаю, как указать второй \ d для ссылки на значение найдено в первом \ д.

Я делаю это в C #.

Ответы [ 2 ]

2 голосов
/ 25 октября 2009

попробовать: {marker=(\d)}(.*?){/marker=(\1)}

1 голос
/ 25 октября 2009

Нумерация обратных ссылок просто \ 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}"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...