所以我试图删除两个字符串(包括两个字符串)之间的所有内容,我无法弄清楚为什么我的代码不起作用。我甚至在这个网站上测试过它: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)到匹配的开头来修复。
答案 0 :(得分:1)
您需要s
标记(DOTALL)才能匹配.
个换行符:
String thematch = "(?s)" + Pattern.quote("<p>Listen") + "(.*?)" + Pattern.quote("</audio></p>");
但是请注意,您应该使用HTML / XML解析器来处理HTML文档。