2011-05-03 3 views
7

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

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

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

ответ

10

Мое решение:

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

ans = 

Hello 
+0

фантастический, спасибо! –

3

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

Дальнейшее обсуждение в этом знаменитом вопросе SO. RegEx match open tags except XHTML self-contained tags.

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

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

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

str = '<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>'; 
rx = '<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>'; 
regexprep(str, rx, '') 
1

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

doc = xmlread ('filename.html'); содержание = doc.item (0) .getTextContent

Надежда это помогает!

Смежные вопросы