Java Regex不适用于特殊字符

我的解析器出了问题。 我想在网站上阅读图像链接,这通常可以正常工作。 但今天我得到了一个包含特殊字符的链接,通常的正则表达式不起作用。

这就是我的代码的样子。

Pattern t = Pattern.compile(regex.trim()); Matcher x = t.matcher(content[i].toString()); if(x.find()) { values[i] = x.group(1); } 

这是html的一部分,会导致麻烦

  

这是我用来获取src属性中的部分的正则表达式:

  

我相信它与链接中的所有特殊字符有关。 但我不知道如何逃避所有这些。 我已经尝试过了

 Pattern.quote(content[i].toString()) 

但结果是一样的:没有找到。

这个. 字符通常只匹配新行字符以外的所有字符。 因此,如果img-tag中有换行符,则您的模式将不匹配。

使用Pattern.compile(..., Pattern.DOTALL)或在(?s)前面添加模式。

在dotall模式中,表达式。 匹配任何字符,包括行终止符。 默认情况下,此表达式与行终止符不匹配。

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html#DOTALL

你的正则表达式应该像:

 String regex = ""; 

这可能是由标签内的换行引起的。 这个。 字符不匹配。

您是否考虑过不使用正则表达式来解析HTML? 使用正则表达式进行HTML解析是非常脆弱的构造。 请考虑使用解析库(如JSoup)。

实际上你应该使用(?s)修饰符来使用