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

Я нашел много похожих постов, но ни один из них не отвечает на мой вопрос. Я хотел бы заменить / удалить / изменить открытый и закрытый тег с определенным ключевым словом. в этом случае я пытаюсь удалить все теги, в котором 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>

2 ответа

Решение

Я пытаюсь удалить все теги, содержащие 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)


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

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

 Find:    <a[^h]*href="#"[^>]*>(.*?)</a>
 Replace: <a href="new_url">\1</a>
Другие вопросы по тегам