Найти/заменить регулярное выражение для удаления тегов html

163
22

Используя find и replace, какое регулярное выражение удалит теги, окружающие что-то вроде этого:


<option value="863">Viticulture and Enology</option>


Примечание: значение параметра изменяется на разные числа, , но использование регулярного выражения для удаления чисел приемлемо


Я все еще пытаюсь учиться, но я не могу заставить его работать.


Я не использую его для анализа HTML, у меня есть данные с одного из наших веб-сайтов компании, которые нам нужны в excel, но наш дизайнер удалил исходный файл данных, и нам это нужно. У меня есть список параметров и вам нужно удалить теги HTML, используя Notepad ++, чтобы найти и заменить

спросил(а) 2021-01-19T16:16:14+03:00 2 месяца, 3 недели назад
1
Решение
173

Это работает для меня Notepad ++ 5.8.6 (UNICODE)


поиск: <option value="\d+">(.*)</option>

заменить: \1

ответил(а) 2021-01-19T16:16:14+03:00 2 месяца, 3 недели назад
106

Я сделал, используя следующее регулярное выражение:


Найти это: <.*?>|</.*?>


и


заменить на: \r\n (это для новой строки)


Используя это регулярное выражение (<.*?>|</.*?>), мы можем легко найти значение между тегами HTML, как показано ниже:


введите описание изображения здесь

У меня есть вход:


<otpion value="123">1</option><otpion value="1234">2</option><otpion value="1235">3</option><otpion value="1236">4</option><otpion value="1237">5</option> 

Мне нужно найти значения между опциями, такими как 1,2,3,4,5


введите описание изображения здесь


и попал ниже вывода:


введите описание изображения здесь

ответил(а) 2021-01-19T16:16:14+03:00 2 месяца, 3 недели назад
97

Это отлично работает для меня:


    Выберите "Регулярное выражение" в режиме "Найти".
    Введите [<]. *? > в поле "Найти" и оставьте поле "Заменить с" пустым.
    Обратите внимание, что вам нужно иметь версию 5.9 Notepad ++ для? оператора для работы.

как показано здесь:
digoCOdigo - strip html tags в блокноте ++

ответил(а) 2021-01-19T16:16:14+03:00 2 месяца, 3 недели назад
77

Что-то вроде этого будет работать (пока вы знаете, формат HTML не изменится):


<option value="(\d+)">(.+)</option>

ответил(а) 2021-01-19T16:16:14+03:00 2 месяца, 3 недели назад
62

String s = "<option value=\"863\">Viticulture and Enology</option>";
s.replaceAll ("(<option value=\"[0-9]+\">)([^<]+)</option>", "$2")
res1: java.lang.String = Viticulture and Enology

(Протестировано с помощью scala, поэтому res1:)


С sed вы будете использовать немного другой синтаксис:


echo '<option value="863">Viticulture and Enology</option>'|sed -re 's|(<option value="[0-9]+">)([^<]+)</option>|\2|'

Для notepad ++ я не знаю деталей, но "[0-9] +" должен означать "хотя бы одну цифру", "[^ <]", но ничего, кроме открытия, меньше, чем несколько раз. Маскировка и обратные ссылки могут отличаться.
Регулярные выражения проблематичны, если они охватывают несколько строк или скрыты комментарием, регулярное выражение не распознает его.


Однако, много html genereated в дружественном регулярном выражении, всегда вписываясь в строку и никогда не комментируя. Или вы используете его в метаданных, и можете проверить свой вход раньше.

ответил(а) 2021-01-19T16:16:14+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема