| View previous topic :: View next topic |
| Author |
Message |
Batya

Joined: 15 Dec 2004 Posts: 2231 Location: Москва, Россия
|
(Separately) Posted: Thu Jul 16, 2026 19:41 Post subject: Примеры регулярных выражений |
|
|
Комрады, прошу помощи. Что-то мозг закипает.
Есть текст вида
| Quote: | _|_123_|_124_|_125_|_123_|_126_|_127
_|_123_|_128_|_129
|
Задача - если в тексте встречается такой же текст, как в начале строки по шаблону "^(_\|_\d+_\|)", заменить на перенос строки такой текст в любом месте строки. Т. е. применительно к указанному примеру заменять нужно исключительно "_|_123_|", и должно получиться:
| Quote: |
_124_|_125
_126_|_127
_128_|_129
|
Заранее число, стоящее в начале строки неизвестно. Но заменять надо только блоки, содержащие число из начала строки.
Соответственно, аналогичный результат должен получиться и, например, для текста:
| Quote: | _|_78_|_124_|_125_|_78_|_126_|_127
_|_78_|_128_|_129
|
Если принципиально, использую поиск в Notepad++. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1208
|
(Separately) Posted: Fri Jul 17, 2026 12:47 Post subject: |
|
|
| Batya wrote: | | Что-то мозг закипает |
Мозг действительно закипает
| Batya wrote: | | Если принципиально, использую |
А принципально использовать регулярные выражения? Может быть, для данной задачи лучше использовать скрипт?
Я сам никогда не пользовался, но есть, вроде, такие продвинутые вещи, как проверки и заглядывания вперед и назад (assertions: lookahead, lookahead), может быть, они подойдут для решения этой задачи? |
|
| Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2231 Location: Москва, Россия
|
(Separately) Posted: Fri Jul 17, 2026 13:08 Post subject: |
|
|
На работе используется Notepad++. Необходимо оперативно по определённым правилам менять текст в несохранённом документе. Для этого хочу записать Notepad++-макрос. Вот для записи макроса и пытаюсь правильно составить регулярное выражение поиска и замены.
Ключевые моменты - текст, как я говорил, не сохранён в виде файла; буфер обмена при использовании макроса трогать крайне нежелательно.
Ну и для себя пытаюсь разобраться в ранее неосвоенных тонкостях регулярных выражений. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1208
|
(Separately) Posted: Fri Jul 17, 2026 13:26 Post subject: |
|
|
Batya
Я понял.
Почему бы не подключить к этому делу ИИ? Он меня уже не раз выручал. Главное держать его в узде вопросы правильные к нему формулировать  |
|
| Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 337 Location: Электросталь
|
(Separately) Posted: Fri Jul 17, 2026 20:16 Post subject: |
|
|
Batya
Сейчас нет возможности опробовать (Notepad++ не пользуюсь), но судя по справке должно работать вот это:
| Code: | Найти:
(?m-s)^(_\|_\d+_\|)(.+?\r\n)\1
Заменить:
\2 |
Если в файле окончания строк LF, тогда в поиске \r\n заменить на \n.
Попробуйте, пожалуйста, если не сработает, то скачаю портабельный Notepad++, погоняю. _________________ Amo ergo sum |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1208
|
(Separately) Posted: Sat Jul 18, 2026 00:42 Post subject: |
|
|
yozhik
А где пояснения в стиле ИИ?
Кстати, он мне говорит, что за одну итерацию невозможно заменить все \1. Только программным путем  |
|
| Back to top |
|
 |
|