按标签java分割字符串

时间:2014-06-09 15:56:32

标签: java regex split

我有字符串

stringst...ringstring11<jscript>qweqweqw....eqwe</jscript>22string..string

我必须删除标签之间的所有内容

stringst...ringstring1122string..string

请告诉我该怎么做

String[] split = response.split("\\<jscript\\>");

它不起作用

3 个答案:

答案 0 :(得分:2)

使用正则表达式和replaceAll替换标记以及它们之间的任何内容。

又快又脏:

str = str.replaceAll("<jscript>[^<]*?</jscript>","");

应该注意,这不是一个可扩展的解决方案,并且有严重的局限性。 HTML不应该使用正则表达式进行解析,但这是一种在这些限制范围内工作的简单方法。

限制:

  • 如果标签之间的文字包含“&lt;”
  • ,则会失败
  • 如果标签不是jscript
  • ,则会失败

答案 1 :(得分:2)

如果您正在解析类似HTML的内容并且它是单个<jscript></jscript>您可以执行类似

的操作
int frontIndex = originalString.IndexOf('<jscript>');
int backIndex =  originalString.IndexOf('</jscript>');

String front = originalString.substring(0,frontIndex); 
String back = originalString.substring(backIndex,originalString.length()); 

originalString = front + back;

这将取消<jscript>之前的所有内容,</jscript>之后的所有内容,直到string.length(),然后将它们连接在一起并替换原始字符串。

答案 2 :(得分:0)

你也可以使用常见的老朋友apache。它有StringUtils.removePattern

文档说

  

public static String removePattern(String source,String regex)

     

删除与给定匹配的源String的每个子字符串   使用DOTALL选项

的正则表达式

您可以通过以下方式使用它:

String result = StringUtils.removePattern(response, "<jscript>[^<]*?</jscript>");

值得一提的是,使用正则表达式解析html可能会让你陷入黑洞并且会降低你的预期寿命。 更新:添加了Robby Cornelissen建议