На самом деле нет более изящного решения, потому что именно здесь мы покидаем область обычных языков и начинаем требовать более сложного автомата с некоторой памятью. (Обратные ссылки сделали бы это, за исключением того, что обратная ссылка расширяется до буквального совпадения с предыдущей частью строки, а не до « this , но только если , что было сопоставлено».)
Иногда вместо этого можно использовать двухэтапный процесс, заменяя сложный X
единственным символом, который, как известно, не присутствует в исходном тексте (для этого могут использоваться управляющие символы), что позволяет упростить второй этап матч. Не всегда возможно, хотя; зависит от того, что вы подходите.