Как удалить ссылки из необработанного HTML-текста? У меня есть:Удалить ссылки из текстового файла
Foo bar <a href="http://www.foo.com">blah</a> bar foo
и хотите получить:
Foo бар бла-бар Foo
впоследствии.
Как удалить ссылки из необработанного HTML-текста? У меня есть:Удалить ссылки из текстового файла
Foo bar <a href="http://www.foo.com">blah</a> bar foo
и хотите получить:
Foo бар бла-бар Foo
впоследствии.
Вы ищете синтаксический анализ HTML с регулярными выражениями и this won't work in all but the simplest cases, так как HTML не является регулярным. Более надежным решением является использование парсера HTML. Многочисленные существуют для многих разных языков.
Это довольно простой случай. Вы не разбираете HTML так же, как удаление конкретной строки ('') и любых строк, соответствующих определенному шаблону ('') из блока текста. Этот тип манипуляции - это именно то, для чего предназначен регулярное выражение. Ни один из аспектов HTML, которые заставляют его _non-regular_ вступать в игру (т. Е. Привязки не могут быть вложены друг в друга, и нам не нужны никакие другие теги). –
Но вас интересуют теги в комментариях и т. Д.? –
попробуйте:
sed -e 's/<a[^>]*>.*<\/a>//g' test.txt
Это создаст «Foo bar bar foo» вместо «Foo bar blah bar foo» для рассматриваемого примера. См. Решение danlei для правильной версии. – Bolo
sed -re 's|<a [^>]*>([^<]*)</a>|\1|g'
Но ответ Брайана прав: Это должно быть использовано только в самых простых случаях.
$ echo 'Foo bar <a href="http://www.foo.com">blah</a> bar foo' | awk 'BEGIN{RS="</a>"}/<a href/{gsub(/<a href=\042.*\042>/,"")}1'
Foo бар бла бар Foo
вы работаете с конкретным языком – spinon
ли из текстового файла, с горсткой ссылок, или это полностью общий HTML? Если последний, и вы просто хотите что-то быстро и дешево, загляните в 'w3m -dump' или' lynx -dump'. Если вы хотите использовать повторяемый или настраиваемый инструмент, ответ Брайана прав, найдите парсер HTML для среды, которую вы хотите использовать. – sarnold
@spinon - он использует «SED» [Stream Editor] - UNIX ... @Marko ... размещение REGEX в начале его вопроса не решит его проблемы –