Повторное использование класса символов в регулярном выражении
Чтобы сделать регулярное выражение более кратким, существует ли сокращенный способ ссылки на класс символов, который встречается ранее в том же регулярном выражении?
пример
Есть ли способ сократить следующее:
[acegikmoqstz@#&].*[acegikmoqstz@#&].*[acegikmoqstz@#&]
1 ответ
Решение
Имейте в виду, что функции регулярных выражений зависят от используемого языка.
С Java вы можете сделать это:
[acegikmoqstz@#&](?:.*[acegikmoqstz@#&]){2}
Но это все, с Java вы не можете ссылаться на именованные подшаблоны.
С помощью PHP вы можете сделать это:
(?(DEFINE)(?<a>[acegikmoqstz@#&]))\g<a>(?:.*\g<a>){2}