当前位置: 首页 > 面试题库 >

Java Regex不适用于特殊字符

龙弘济
2023-03-14
问题内容

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

这就是我的代码的样子。

Pattern t = Pattern.compile(regex.trim());

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

这是html的一部分,会引起麻烦

<div class="open-zoomview zoomlink" itemscope="" itemtype="http://schema.org/Product"> 
<img class="zoomLink productImage" src="

http://tnm.scene7.com/is/image/TNM/template_335x300?$plus_335x300$&amp;$image=is{TNM/1098845000_prod_001}&amp;$ausverkauft=1&amp;$0prozent=1&amp;$versandkostenfrei=0" alt="Produkt Atika HB 60 Benzin-Heckenschere" title="Produkt Atika HB 60 Benzin-Heckenschere" itemprop="image" /> 
</div>

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

<img .*src="(.*?)" .*>

我认为这与链接内的所有特殊字符有关。但是我不确定如何逃避所有这些。我已经尝试过

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

但是结果是一样的:没有发现任何东西。


问题答案:

.字符通常只匹配换行符 以外的所有 字符。因此,如果img标签中包含换行符,则您的模式将不匹配。

使用Pattern.compile(..., Pattern.DOTALL)或在模式之前加上(?s)

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

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



 类似资料:
  • 问题内容: 我该如何更换: “ã”和“ a” “é”和“ e” 在PHP中?这可能吗?我读过某处我可以使用基本字符的ascii值和重音符号的ascii值进行一些数学运算,但是现在找不到任何参考。 问题答案: 这个答案是不正确的。 编写它时,我不理解Unicode规范化。查看francadaval的评论和链接 签出Normalizer类来执行此操作。文档很好,所以我将其链接起来,而不是在这里重复:

  • 关于字符集和替代字形 除键盘上可看到的字符之外,字体中还包括许多字符。根据字体的不同,这些字符可能包括连字、分数字、花饰字、装饰字、序数字、标题和文体替代字、上标和下标字符、变高数字和全高数字。字形是特殊形式的字符。例如,在某些字体中,大写字母 A 有几种形式可用,如花饰字或小型大写字母。 插入替代字形的方式有两种: 可以使用 “字形 ”面板来查看和插入任何字体中的字形。 可以使用 “OpenTy

  • 一些字符在 XML 中有特殊的含义,只能够通过其实体名称输入 字符 写法 缩写涵义 < &lt; less than > &gt; greater than & &amp; ampersand " &quot; quote ' &apos; apostrophe 空格 &nbsp; none-break space 通常需要使用实体输入的字符包括<、&、空格   XML 会将任意数量的空格解析为一

  • 问题内容: 如何查看]`字符串中是否存在特殊字符? 问题答案: 将匹配任何非单词字符。

  • 我需要使用正则表达式验证密码 密码应至少包含四个字符, 至少有一个小写字符, 至少有一个大写字符, 至少一个数字 我有以上正则表达式工作,但它接受任何特殊字符。我怎么能拒绝呢,请指点

  • 我有一个问题与搜索的特殊字符在solr。我的文档有一个字段标题,有时它可以像泰坦尼克号-1999(它有字符-)。当我试图搜索索尔与"-"我收到一个400错误。我试图逃避这个角色,所以我尝试了像“-”和“\-”这样的东西。有了这些变化,solr不会用错误来回应我,但它会返回0个结果。 如何在solr admin中搜索具有该特殊字符(如“-”或“”?)的内容??? 问候 在这里更新您可以看到我当前的s