Страницы

Поиск по вопросам

понедельник, 14 января 2019 г.

Как сократить регулярное выражение

Представим очень большую регулярку, которая в одной строке забирает все между тегами, например:
'>значение<'
Для этого напишем что-то вроде:
>([^<]+)
Подобных одинаковых абсолютно кусков выражения может быть много.
Можно ли заключить их в группу типа:
(?'value'[^<]+)
и использовать в другом куске этого же выражения по типу >(value)?


Ответ

Так как в в .NET нет \g и рекурсии, как в PCRE, невозможно внутри регулярного выражения использовать ссылку на часть регулярного выражения.
Для этого проще использовать string.Format()
var something = "[^<]*"; var regex = new Regex(string.Format(">{0}<.*?>{0}<", something));

Комментариев нет:

Отправить комментарий