Повторное использование класса символов в регулярном выражении

Чтобы сделать регулярное выражение более кратким, существует ли сокращенный способ ссылки на класс символов, который встречается ранее в том же регулярном выражении?

пример

Есть ли способ сократить следующее:

[acegikmoqstz@#&].*[acegikmoqstz@#&].*[acegikmoqstz@#&]

1 ответ

Решение

Имейте в виду, что функции регулярных выражений зависят от используемого языка.

С Java вы можете сделать это:

[acegikmoqstz@#&](?:.*[acegikmoqstz@#&]){2}

Но это все, с Java вы не можете ссылаться на именованные подшаблоны.

С помощью PHP вы можете сделать это:

(?(DEFINE)(?<a>[acegikmoqstz@#&]))\g<a>(?:.*\g<a>){2}
Другие вопросы по тегам