使用Matlab进行html标签的正则表达式

时间:2011-05-03 08:43:05

标签: regex parsing matlab tags

我正在寻找一种方法来使用regexp来从字符串中删除所有html标签。
因此,如果我<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>,我想从中获取hello

我知道它可能看起来像嵌套标签,但事实并非如此,因为我想在这里做的就是删除两个<>之间的任何内容。

我正在使用Matlab这样做,但正则表达式完全相同,所以请随时提供任何帮助。
谢谢。

4 个答案:

答案 0 :(得分:9)

我的解决方案是:

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

ans =

Hello

答案 1 :(得分:5)

匹配此类标记

<[^>]*>

在线查看here at Rubular

答案 2 :(得分: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, '')

答案 3 :(得分:1)

既然你提到要提取&#34;你好&#34;从上面的html(比如filename.html)文件中,您可以在MATLAB中使用以下内容:

  
    

doc = xmlread(&#39; filename.html&#39;);     content = doc.item(0).getTextContent

  

希望这有帮助!