gpt4 book ai didi

java、正则表达式和匹配器

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:44 25 4
gpt4 key购买 nike

我有一位 friend 曾在某个时间点进行过此操作。在学习正则表达式时,我不明白为什么它会有一个/,因为沙箱测试人员对此犹豫不决。

private static final Pattern SUB_URL_PATTERN = Pattern.compile("href=\"(/*\\w*/*\\w*/\\d+.html)\">",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);

上面的正则表达式模式中的/试图做什么?这个模式被破坏了,我不知道如何修复。

这是它在调试器中的显示效果:

href="(/*\w*/*\w*/\d+.html)">

正则表达式就是这样崩溃的吗?

href="     ... matches href="
/* ... matches 0 or more occurrences of /
\w* ... matches 0 or more occurrences of word characters
/* ... matches 0 or more occurrences of /
\w* ... matches 0 or more occurrences of word characters
/ ... matches a /
\d+ ... matches one or several digits
.html)"> ... matches /html
<小时/>

这是应该捕获 href="/reo/4890530477.html"的网页源代码片段:

<a href="/reo/4890530477.html" class="i" data-ids="0:00j0j_jDfSzBcGgid"></a> 

最佳答案

final Pattern SUB_URL_PATTERN = Pattern.compile("href=\"/\\w+/\\w+/\\d+\\.html\"")

应该匹配

href="/[word]/[word]/[number].html"

您可能想要:

final Pattern SUB_URL_PATTERN = Pattern.compile("href=\"(/\\w+)*/\\d+\\.html\"")

哪个会匹配

href="[0+ groups of '/word']/[number].html"

使用 Java,您需要使用两个反斜杠 \\ 来创建包含反斜杠的字符串...例如,如果您想要使用 \d 的正则表达式模式,则需要将字符串声明为 "\\d",因为 Java 语言使用与正则表达式相同的转义字符。

我强烈建议您花一个小时的时间来完成以下免费的正则表达式教程:

http://regexone.com/

它是交互式的,并且很容易完成。当您完成后,我保证您对它们的理解会加深 100 倍。

对于第二个 Jens,使用 html 解析器可能比使用正则表达式更好。你可以查看 jsoup;这就是我用的。

http://jsoup.org/

关于java、正则表达式和匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28509854/

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