正则表达式获取链接及标题

示例:

"<p class=\"MsoNormal\">

<span style=\"text-decoration:underline;\">链接:

<a href=\"链接1\" title=\"标题1\" target=\"_self\">标题1</a>

<a href=\"链接2\" title=\"\" target=\"_self\">标题2</a>

<a href=\"链接3\">标题3</a>

</span>

</p>"

获取href及title,title没有获取显示内容作为标题
 

public static List<Map<String, String>> getAttachmentFromContent(String content) {
        Pattern p = Pattern.compile("<a\\s+href=\"(.*?)\"\\s+title=\"(.*?)\"\\s*[^>]*>(.*?)</a>");
        Matcher m = p.matcher(content);
        List<Map<String, String>> attachmentList = new ArrayList<>();
        while (m.find()) {
            Map<String, String> attachmentMap = new HashMap<>();
            String url = m.group(1);
            String fileName = m.group(2);
            if (!StringUtils.hasText(fileName)) {
                fileName = m.group(3);
            }
            if (!url.contains("http")) {
                url = "https://" + url;
            }
            if (StringUtils.hasText(url)) {
                attachmentMap.put("url", url);
            }
            // 如果title为空,则使用默认文件名或空字符串
            if (StringUtils.hasText(fileName)) {
                attachmentMap.put("title", fileName);
            } else {
                attachmentMap.put("title", "未命名");
            }
            attachmentList.add(attachmentMap);
        }
        return attachmentList;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值