我似乎无法使replaceAll工作(删除两个字符串之间的所有内容)

时间:2014-08-12 14:26:54

标签: java android regex replaceall

所以我试图删除两个字符串(包括两个字符串)之间的所有内容,我无法弄清楚为什么我的代码不起作用。我甚至在这个网站上测试过它:http://www.regexplanet.com/advanced/java/index.html

他们的“replaceAll()”部分具有我期望的确切字符串,但我在Android应用程序上得到的是整个原始字符串,没有任何更改。我已根据本网站上的示例尝试了不同的方法,例如:

String thematch = Pattern.quote("<p>Listen") + "(.*?)" + Pattern.quote("</audio></p>");
String thenew = thecontent.replaceAll(thematch, "");

String thenew = thecontent.replaceAll("<p>Listen(.*?)</audio></p>","");

都没有替换字符串。发生了什么事?

编辑:通过在anubhava表示添加(?s)到匹配的开头来修复。

1 个答案:

答案 0 :(得分:1)

您需要s标记(DOTALL)才能匹配.个换行符:

String thematch = "(?s)" + Pattern.quote("<p>Listen") + "(.*?)" + Pattern.quote("</audio></p>");

但是请注意,您应该使用HTML / XML解析器来处理HTML文档。