1

Я прочитал около 15 учебных пособий по регулярным выражениям, но я явно не понимаю, так как не смог приспособить их к своей проблеме.

У меня есть один набор кода, который можно найти во многих различных документах. Могут быть варианты их с различным содержанием между двумя тегами привязки, но вот один вариант (все остальные имеют одинаковую форму).

[anchor=ad1][img]http://i.imgur.com/48rwaraw.png[/img] 
                                 [URL=http://goo.gl/Ii3WNz][img]http://i.imgur.com/rBbf7nM.png[/img][/URL]
                                                 [size=7pt]Advertised sites are not endorsed and may be unsafe, untrustworthy, or illegal in your jurisdiction. [url=http://goo.gl/aw52j52]Advertise here.[/url][/size]
[img]http://i.imgur.com/48rwaraw.png[/img][anchor=ad1end]

Я хочу иметь возможность заменить все между тегами привязки, т.е. где мой * здесь:

[anchor=ad1]*[anchor=ad1end]

Замена будет включать в себя символы, аналогичные оригиналу, если это имеет значение. Я просто не могу заставить регулярные выражения найти правильную строку, не говоря уже о том, чтобы заменить ее другой. Спасибо за помощь.

Изменить: Использование ToolBucket для использования многострочного

2 ответа2

3

Найти и заменить многострочную строку текста между тегами

Решение № 1

Используйте следующее регулярное выражение в Find what: \[anchor=ad1\](.*?)\[anchor=ad1end\] ,
Replace with: [anchor=ad1]replace[anchor=ad1end]
и выберите Regular expression и [x] . matches newline

Notepad++ найти и заменить пример регулярных выражений

Пример данных для тестирования:

[anchor=ad1]some multiline string of text
   that should be replaced[anchor=ad1end]
[anchor=ad1][img]http://i.imgur.com/some_image.png[/img]
   another one multiline string of text
   that should be replaced[anchor=ad1end]
...

Решение № 2

Чуть более продвинутое решение. Это требует Notepad++ v6.0 или выше.

Найти что: (?<=\[anchor=ad1\]).*?(?=\[anchor=ad1end\])
Заменить на: replace
выберите Regular expression и [x] . matches newline
Важное примечание: кнопка Replace НЕ работает в Notepad++ v6.1.6, но Replace All работает просто отлично.

-1

Вы можете включить начальный и конечный теги в свой поисковый запрос. Затем используйте RegEx для захвата всего, что находится между .*

[anchor=ad1].*[anchor=ad1end]

Ключ должен гарантировать, что вы проверяете ". Соответствует новой строке". Смотрите скриншот ниже.

Снимок экрана Notepad++ с регулярным выражением

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .