yozhik

|
Posted: Sat Jul 18, 2026 15:26 Post subject: |
|
|
| Orion9 wrote: | | Видимо, это я неправильно задачу понял. |
Нет, это я её неправильно понял, точнее поторопился и просто не вчитался.
Ограничение регулярок в том, что для замены нужно знать точное кол-во совпадений. Т.е. я могу найти неопределённое число совпадений, но если мне нужно каждое из них заменить, то в замене я должен сослаться на каждое совпадение по его номеру, иначе никак.
Поэтому к Бате вопрос: этот шаблон стабильный или варьируется?
| Code: | _|_123_|_124_|_125_|_123_|_126_|_127
_|_123_|_128_|_129
другими словами
(искомое) ... (искомое) ...
(искомое) ... |
Т.е. «искомое» всегда ли 2жды в первой строке и 1жды во второй? Если да, то поможет вот это:
| Code: | Найти:
(?m-s)^(_\|_\d+_\|)(.+?)\1(.+?\r\n)\1
Заменить:
\r\n\2\r\n\3\r\n |
Если нет, то решение — перечислить в макросе по очереди все возможные варианты. Например:
| Code: | Для:
(искомое) ... (искомое) ... (искомое) ...
(искомое) ... (искомое) ...
Найти/Заменить:
(?m-s)^(_\|_\d+_\|)(.+?)\1(.+?)\1(.+?\r\n)\1(.+?)\1
\r\n\2\r\n\3\r\n\4\r\n\5\r\n
Для:
(искомое) ... (искомое) ... (искомое) ...
(искомое) ...
Найти/Заменить:
(?m-s)^(_\|_\d+_\|)(.+?)\1(.+?)\1(.+?\r\n)\1
\r\n\2\r\n\3\r\n\4\r\n
Для:
(искомое) ... (искомое) ...
(искомое) ...
Найти/Заменить:
(?m-s)^(_\|_\d+_\|)(.+?)\1(.+?\r\n)\1
\r\n\2\r\n\3\r\n
Для:
(искомое) ...
(искомое) ...
Найти/Заменить:
(?m-s)^(_\|_\d+_\|)(.+?\r\n)\1
\r\n\2\r\n
и т.п. |
Ну, или скрипт писать, да, программно. _________________ Amo ergo sum |
|