gpt4 book ai didi

java regex 为什么这两个正则表达式不同

转载 作者:行者123 更新时间:2023-12-02 00:12:29 25 4
gpt4 key购买 nike

我有一个 java 字符串演示 div 元素:

String source = "<div class = \"ads\">\n" +
"\t<dl style = \"font-size:14px; color:blue;\">\n" +
"\t\t<li>\n" +
"\t\t\t<a href = \"http://ggicci.blog.163.com\" target = \"_blank\">Ggicci's Blog</a>\n" +
"\t\t</li>\n" +
"\t</dl>\n" +
"</div>\n";

html 格式为:

<div class = "ads">
<dl style = "font-size:14px; color:blue;">
<li>
<a href = "http://ggicci.blog.163.com" target = "_blank">Ggicci's Blog</a>
</li>
</dl>
</div>

我编写了这样一个正则表达式来提取 dl 元素:

<dl[.\\s]*?>[.\\s]*?</div>

但是什么也没找到,我将其修改为:

<dl(.|\\s)*?>(.|\\s)*?</div>

然后就可以了。所以我这样测试:

System.out.println(Pattern.matches("[.\\s]", "a")); --> false
System.out.println(Pattern.matches("[abc\\s]", "a")); --> true

那么为什么要加“.”呢?无法匹配“a”?

最佳答案

方括号内的字符按字面意思处理。 [.\\s] 表示“匹配点、反斜杠或 s”。

<小时/>

(.|\\s) 相当于 ..

<小时/>

我认为您确实想要以下正则表达式:

<dl[^>]*>.*?</div>

关于java regex 为什么这两个正则表达式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12457216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com