gpt4 book ai didi

java - 这个正则表达式有什么问题?

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:35 25 4
gpt4 key购买 nike

我正在 Java 上尝试以下代码:

String test = "http://asda.aasd.sd.google.com/asdasdawrqwfqwfqwfqwf";
String regex = "[http://]{0,1}([a-zA-Z]*.)*\\.google\\.com/[-a-zA-Z/_.?&=]*";
System.out.println(test.matches(regex));

它确实工作了几分钟(之后我终止了虚拟机)但没有结果。谁能帮帮我?

顺便说一句:你会推荐我做什么来加快 weblink-testng 正则表达式的速度?

最佳答案

[http://] 是一个字符类,表示该集合中的任何一个字符。

如果它必须http:// 开头,只需将那些特定的方括号去掉即可。如果它是可选的,您可以使用 (http://)?

一个明显的问题是您正在寻找序列 ([a-zA-Z]+.)*\\.google - 这将做很多很多 由于那个裸露的 . 而回溯,这意味着“任何字符”而不是你想要的字面句点。

但即使您将其替换为您的意思([a-zA-Z]+\\.)*\\.google,您仍然有一个问题 - 这将需要紧接在 google 之前的两个 . 字符。您应该改为尝试:

String regex = "(http://)?([a-zA-Z]+\\.)*google\\.com/[-a-zA-Z/_.?&=]*";

这会立即为我返回一个 true 匹配项。

请记住,目前这需要 google.com 末尾的 /。如果这是一个问题,这是一个小的修复,但我把它留在那里,因为你在你的原始正则表达式中有它。

关于java - 这个正则表达式有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4104269/

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