Удалить / изменить определенные теги HTML NotePad ++


1

Я нашел много похожих постов, но ни один из них не отвечает на мой вопрос. Я хотел бы заменить / удалить / изменить открытый и закрытый тег с определенным ключевым словом. в этом случае я пытаюсь удалить все теги, в котором href = "#" ....

<a href="#">leave this text</a>
<a class="" id="" href="#">leave this text too</a>

<a href="http://......">Dont remove this tag!</a>

У меня есть этот код, но я не могу понять, как оставить текст ...

find: <a[^h]*href="#"[^>]*> (skip content) </a>
replace: (same content)
or
replace: <a href="somthing"> (same content) </a>

Под note ++ вы имеете в виду notepad ++?
DavidPostill

Да, извините. Блокнот ++
Альфонсо,

Это было слишком просто! ;)
ДэвидПостилл

Ответы:


0

Я пытаюсь удалить все теги, содержащие href="#"

  • Меню «Поиск»> «Заменить» (или Ctrl+ H)

  • Установите «Найти что» <a .*?href="#">(.*?)</a>

  • Установите «Заменить» на \1

  • Включить «Регулярное выражение»

  • Нажмите «Заменить все»

    Образ

До :

<a href="#">leave this text</a>
<a class="" id="" href="#">leave this text too</a>
<a href="http://......">Dont remove this tag!</a>

После :

leave this text
leave this text too
<a href="http://......">Dont remove this tag!</a>

Как указывает AFH в комментарии, есть лучшее регулярное выражение, которое будет перехватывать выражения, которые не были включены в пример данных.

  • Установите «Найти что» <a .*?href="#" .*?>(.*?)</a>

    Это будет соответствовать линиям , где Есть положения послеhref="#" (и до первого совпадения >).

    Примечание:

    Он не будет работать правильно, если >в поле значения последующего предложения есть какие-либо s (до >сопоставления <a)


дальнейшее чтение


1
Я не вижу никакой причины, по которой ваша строка поиска не работала бы с примерами, которые задавал спрашивающий, хотя его ответ, приведенный ниже, допускает предложения как после, hrefтак и раньше: для этого вам понадобится <a .*?href="#" .*?>(.*?)</a>. На самом деле, это должно быть лучшим решением, так как он потерпит неудачу, если будет другое предложение, содержащее hперед href(например, в classили idзначение). И то и другое потерпит неудачу, если >в последующем предложении будут указаны значения в поле значения, и я не вижу простого решения для этого (маловероятного) случая.
AFH

@AFH Согласен со всем вышеперечисленным. Однако мой ответ работал с данными, предоставленными ФП в качестве входных данных. Я добавлю заметку с вашим регулярным выражением только для полноты. Спасибо за ваш комментарий.
DavidPostill

0

Спасибо Дэвид за ответ! Но на самом деле код: <a .*?href="#">(.*?)</a>не нашел никаких атрибутов в моем файле. Это может быть из-за некоторых других конфигураций или других версий notepad ++. Я должен был использовать этот код:

 Find:    <a[^h]*href="#"[^>]*>(.*?)</a>
 Replace: <a href="new_url">\1</a>

Мой ответ был верным с данными, которые вы указали в качестве входных данных. Я не верю, что версия Notepad ++ будет иметь значение для такого рода регулярных выражений.
DavidPostill
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.