我正在寻找一种方法来使用regexp来从字符串中删除所有html标签。
因此,如果我<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>
,我想从中获取hello
。
我知道它可能看起来像嵌套标签,但事实并非如此,因为我想在这里做的就是删除两个<>
之间的任何内容。
我正在使用Matlab这样做,但正则表达式完全相同,所以请随时提供任何帮助。
谢谢。
答案 0 :(得分:9)
我的解决方案是:
>> str='<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>';
>> regexprep(str, '<.*?>','')
ans =
Hello
答案 1 :(得分:5)
答案 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
希望这有帮助!