如何在java中使用正则表达式从字符串中删除一些html标记
我写了一个代码从XML文件(提要)中读取新闻。。我必须在列表视图中显示每个项目的描述。。。我用这段代码删除了描述标记中的html标记:如何在java中使用正则表达式从字符串中删除一些html标记,java,html,regex,Java,Html,Regex,我写了一个代码从XML文件(提要)中读取新闻。。我必须在列表视图中显示每个项目的描述。。。我用这段代码删除了描述标记中的html标记: else if ("description".equals(tagName)){ sourcedescription= parser.nextText(); description=Html.fromHtml(sourcedescription).
else if ("description".equals(tagName)){
sourcedescription= parser.nextText();
description=Html.fromHtml(sourcedescription).toString();
Log.d("msg", description);
feedDescription.add(description);
}
一些项目我成功地显示了它的描述,没有标记,即以一种可以理解的方式,但是我没有删除其他一些项目的所有标记,这些项目有{iframe}{/iframe}标记。。。我认为这个标签存在于“无描述”项目的描述标签中
{iframe height=“600”}{/iframe}]>
我的问题是如何使用正则表达式删除iframe标记?一个可行的解决方案是
String regexp = "\\{/?iframe.*?\\}";
String text = "<description><![CDATA[<p>{iframe height=\"600\"}<a href=\"http://admreg.yu.edu.jo/index.php?option=com_content&view=article&id=606:------20132014&catid=87:2011-01-25-18-12-08&Itemid=438\">http://admreg.yu.edu.jo/index.php?option=com_content&view=article&id=606:------20132014&catid=87:2011-01-25-18-12-08&Itemid=438</a><span style=\"line-height: 1.3em;\">{/iframe}</span></p>]]></description>";
System.out.println(text.replaceAll(regexp, ""));
一个可行的解决办法是
String regexp = "\\{/?iframe.*?\\}";
String text = "<description><![CDATA[<p>{iframe height=\"600\"}<a href=\"http://admreg.yu.edu.jo/index.php?option=com_content&view=article&id=606:------20132014&catid=87:2011-01-25-18-12-08&Itemid=438\">http://admreg.yu.edu.jo/index.php?option=com_content&view=article&id=606:------20132014&catid=87:2011-01-25-18-12-08&Itemid=438</a><span style=\"line-height: 1.3em;\">{/iframe}</span></p>]]></description>";
System.out.println(text.replaceAll(regexp, ""));
使用以下正则表达式:
\{iframe[^\}]*\} // to delete the opening tag
\{/iframe[^\}]*\} // to delete the closing tag
这些正则表达式不会删除iframe中的内容。使用这些正则表达式:
\{iframe[^\}]*\} // to delete the opening tag
\{/iframe[^\}]*\} // to delete the closing tag
这些正则表达式不会删除iframe中的内容。HTML不是常规语言。不要使用正则表达式,否则你会死。HTML不是一种常规语言。不要使用正则表达式,否则你会死。注意:如果有选择,请使用解析器。也就是说…为了一个又快又脏的
str.replaceAll("\\{/?iframe.*?\\}", "");
删除这些标记之间的内容
str.replaceAll("\\{iframe.*?\\}.*?\\{/iframe\\}", "")
注意:如果您有选择,请使用解析器。也就是说…为了一个又快又脏的
str.replaceAll("\\{/?iframe.*?\\}", "");
删除这些标记之间的内容
str.replaceAll("\\{iframe.*?\\}.*?\\{/iframe\\}", "")
为什么是正则表达式?为什么不为这项工作使用合适的工具,比如XPath?为什么使用正则表达式?为什么不为这项工作使用合适的工具,比如XPath?好的,这项工作。。谢谢:),,但是这个标签里面还是出现了什么:我的意思是它的内容是href的值@莫里瓦雷:非常感谢:(()()()()())()))好的。。谢谢:),,但是这个标签里面还是出现了什么:我的意思是它的内容是href的值@莫利瓦雷:非常感谢:()()()()()())())()))好的@SameerSawla这是一个删除评论的答案好吧,我将尝试不再做。哈哈,这是一个有趣的评论@SameerSawla这是对已删除评论的回答