регулярное выражение для HTML-тегов с Matlab - PullRequest
7 голосов
/ 03 мая 2011

Я ищу способ использования регулярных выражений для удаления всех тегов HTML из строки.
Так что, если у меня есть <HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>, я бы хотел получить от него hello.

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

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

Ответы [ 4 ]

9 голосов
/ 03 мая 2011

Мое решение:

>> str='<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>';
>> regexprep(str, '<.*?>','')

ans =

Hello
5 голосов
/ 03 мая 2011

Для совпадения с таким тегом

<[^>]*>

См. Онлайн здесь, на Rubular

3 голосов
/ 03 мая 2011

Широко распространено мнение, что использование регулярных выражений для анализа общего HTML-кода - это плохая форма. Если ваш html намного сложнее, чем приведенный пример, вам следует использовать вместо него анализатор XML.

Дальнейшее обсуждение в этом знаменитом вопросе SO. RegEx соответствует открытым тегам, кроме автономных тегов XHTML .

Если вы хотите правильно проанализировать содержимое, скачайте xml_io_tools и используйте

doc = xml_read('test.html')
doc.b.FONT.CONTENT

Если вы хотите придерживаться регулярных выражений, используйте ответ Илья, но с одним из регулярных выражений из связанного ответа, например,

str = '<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>';
rx = '<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>';
regexprep(str, rx, '')
1 голос
/ 30 октября 2014

Поскольку вы упомянули, что хотите извлечь "привет" из указанного выше файла html (скажем, filename.html), вы можете использовать в MATLAB следующее:

doc = xmlread ('filename.html');content = doc.item (0) .getTextContent

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...