温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎样用java正则抓取网址

发布时间:2026-10-25 12:59:14 来源:亿速云 阅读:99 作者:小樊 栏目:编程语言

在 Java 中,可以使用 正则表达式(Regular Expression) 配合 java.util.regex 包来从文本中抓取网址(URL)。下面从简单示例到常见注意点给你说明。


一、最基础示例(抓取 http/https 网址)

import java.util.regex.*;
import java.util.*;

public class UrlExtractor {
    public static void main(String[] args) {
        String text = "访问 https://www.baidu.com 和 http://example.com/index.html 查看内容";

        // 正则:匹配 http 或 https 开头的网址
        String regex = "https?://[\\w./?=&#%-]+";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

输出

https://www.baidu.com
http://example.com/index.html

二、更严谨的 URL 正则(推荐)

如果你希望匹配更标准的网址(包含域名、端口、路径等):

String regex =
    "https?://[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-]*)";

特点

  • 支持多级域名(如 a.b.c.com)
  • 支持路径、参数、锚点
  • 避免匹配到非法字符

三、只抓取域名(不带路径)

String regex = "https?://[\\w.-]+";

示例输出:

https://www.baidu.com
http://example.com

四、抓取所有 URL(包括无协议)

如果你还想匹配 www.baidu.com 这种:

String regex = "(https?://)?[\\w-]+(\\.[\\w-]+)+";

五、使用 Java 8+ Stream(简洁写法)

List<String> urls = Pattern.compile("https?://[\\w./?=&#%-]+")
        .matcher(text)
        .results()
        .map(MatchResult::group)
        .collect(Collectors.toList());

六、注意事项(很重要)

  1. 正则不适合完全解析 URL

    • 如果要做严格 URL 校验,推荐使用:
    new URI(url)
    

    或

    URL url = new URL(str);
    
  2. HTML 中抓 URL

    • 正则不推荐用于解析 HTML
    • 建议使用 Jsoup:
    Document doc = Jsoup.connect(url).get();
    Elements links = doc.select("a[href]");
    

七、常见场景总结

场景 建议
文本中提取网址 正则 ✅
校验 URL 是否合法 URI / URL ✅
解析网页链接 Jsoup ✅
高性能批量抓取 正则 + 流式处理 ✅

如果你有具体文本样例(比如日志、HTML、微信文本),我可以帮你写精准正则。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手