我一直在尝试从字符串中解析地址,并且在选择字符串方面取得了部分成功......
目前我有
Pattern regex = Pattern.compile("[/].*[a-zA-Z](?=\/|:|)", Pattern.DOTALL)
在输入字符串https://www.google.com/
上,当前模式让我//www.google.com
(这在某种程度上是正确的)当我尝试输入字符串 https://www.google.com/search?q=Regular+Expressions&num=1000
时,它会给我 //www.google.com/search?q=正则+表达式&num
我想做的是解析地址,使其在 :
、/
或空格之前结束
我也想出了
Pattern regex = Pattern.compile("[.*/][^/][a-z].*[a-zA-Z](?=\/|:|)", Pattern.DOTALL)
它(部分)与 https://google.com:80
配合使用,为我提供 /google.com
。
我做错了什么?
最佳答案
试试这个正则表达式 ^.*?\/\/([^:\/\s]+)
,您要搜索的部分存储在组 1 中。
Pattern pattern = Pattern.compile("^.*?\\/\\/([^:\\/\\s]+)");
Matcher matcher = pattern.matcher("your input url");
while (matcher.find()) {
System.out.println("Domain: " + matcher.group(1));
}
编辑:通过在表达式之前匹配 //
修复了额外的反斜杠问题。
关于java - 使用正则表达式解析 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40922207/