散装java 散装java
首页
  • Java基础
  • JVM
  • Java多线程
  • 知识点
  • 案例
  • Redis
  • RabbitMQ
  • Kafka
  • Elasticsearch
  • MySQL
  • Linux
  • Docker
  • Zookeeper
  • Nginx
  • Git
  • JMeter
  • Gradle
  • 常见BUG
  • 常见解决方案
  • 资源
  • 问答
💖支持
Gitee (opens new window)
首页
  • Java基础
  • JVM
  • Java多线程
  • 知识点
  • 案例
  • Redis
  • RabbitMQ
  • Kafka
  • Elasticsearch
  • MySQL
  • Linux
  • Docker
  • Zookeeper
  • Nginx
  • Git
  • JMeter
  • Gradle
  • 常见BUG
  • 常见解决方案
  • 资源
  • 问答
💖支持
Gitee (opens new window)
  • BUG

    • BUG导读
    • zookeeper 链接异常
    • Docker启动异常
  • 解决方案

    • 解决方案导读
    • Java 从一段文本中识别 URL
      • 需求描述
      • 解决方案
  • BUG&CASE
  • 解决方案
散装java
2023-01-10
目录

Java 从一段文本中识别 URL

# 需求描述

需要从一整段的文本中,识别出来其中的 URL 链接

# 解决方案

方案不唯一,可以纯正则去匹配。

本文演示的是以 url-detector 来解决本问题

Maven 坐标如下

<!-- https://mvnrepository.com/artifact/io.github.url-detector/url-detector -->
<dependency>
    <groupId>io.github.url-detector</groupId>
    <artifactId>url-detector</artifactId>
    <version>0.1.23</version>
</dependency>
1
2
3
4
5
6

Java 中使用的示例代码如下

text 中的 \u 开头的,是emoji表情

public static void main(String[] args) {

        String text = "\uD83C\uDFD6️开启\uD83D\uDD1B海南度假模式\n" +
                "\uD83C\uDF89绝美西岛 新品上市\n" +
                "\uD83D\uDCB0剑麻酒店2晚498起含早\n" +
                "\uD83D\uDCF7赠价值699双人专业旅拍➕\n" +
                "     度假区无限畅玩\n" +
                "\uD83C\uDFAB超长有效期,快来囤货~\n" +
                "\uD83D\uDC49http://tuniu.cc/t/pvSLwu"+
                "\uD83D\uDC49tuniu.cc/t/pvSLwu";
        // 中文正则 代码里面首先把中文都变成空格了,防止中文与英文网址在一起被错误识别
        String regexChinese = "[\u4e00-\u9fa5]";
        // 正则 emoji, 替换 emoji 防止对匹配结果产生影响
        String regexEmoji = "[\ud800\udc00-\udbff\udfff\ud800-\udfff]";
        text = text.replaceAll(regexChinese, " ");
        text = text.replaceAll(regexEmoji, " ");

        UrlDetector parser = new UrlDetector(text, UrlDetectorOptions.Default);
        List&lt;Url> found = parser.detect();
        for (Url url : found) {
            System.out.println(url.getOriginalUrl());
        }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

输出如下

http://tuniu.cc/t/pvSLwu
tuniu.cc/t/pvSLwu
1
2
上次更新: 2023/01/10, 19:45:17
解决方案导读

← 解决方案导读

Theme by Vdoing | Copyright © 2022-2024 散装java | MIT License | 鲁ICP备2022022143号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式