You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Java 8中提取字符串中的<img>标签并收集至List

从字符串中提取所有标签到List的实现方法

核心思路

利用Matcher的循环匹配能力,通过find()方法遍历所有符合正则的结果,将每个匹配到的<img>标签存入List即可。

修正正则表达式

你当前的正则存在转义冗余问题,调整为正确的Java正则字符串:"<img.*?>"(匹配从<img开始到最近的>结束的完整标签,符合你要求的从<img src="到">的范围)。如果需要严格匹配以<img src="开头的标签,可以用"<img src=\".*?\">"。

完整实现代码

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ImgTagExtractor {
    public static void main(String[] args) {
        final String regex = "<img.*?>"; // 或严格匹配src开头:"<img src=\".*?\">"
        final String string = "Hello World <img src=\"https://dummyimage.com/300.png/09f/777\"> \nMy Name <img src=\"https://dummyimage.com/300.png/09f/ff2\"> Random Text\nHello\nHello Random <img src=\"https://dummyimage.com/300.png/09f/888\"> \nMy Name <img src=\"https://dummyimage.com/300.png/09f/2ff\">adaad\n";

        final Pattern pattern = Pattern.compile(regex);
        final Matcher matcher = pattern.matcher(string);
        
        // 用于存储所有匹配到的img标签
        List<String> imgTags = new ArrayList<>();
        
        // 循环查找所有匹配项
        while (matcher.find()) {
            imgTags.add(matcher.group()); // 获取当前匹配的完整标签并加入List
        }
        
        // 测试输出结果
        for (String tag : imgTags) {
            System.out.println(tag);
        }
    }
}

关键步骤说明

  1. 初始化List:创建ArrayList<String>来存储提取到的标签。
  2. 循环匹配:调用matcher.find(),该方法会逐个查找字符串中的匹配项,找到时返回true,直到没有匹配项为止。
  3. 收集结果:每次find()返回true时,用matcher.group()获取当前匹配的完整字符串,添加到List中。

注意事项

  • 如果你的标签存在复杂嵌套(比如属性值包含转义引号),正则可能无法准确匹配,这种情况下建议使用HTML解析库(如Jsoup)来处理,避免正则的局限性。
  • Pattern.MULTILINE模式在这里不需要,因为你的匹配逻辑不依赖行首行尾(^或$),可以去掉。

内容的提问来源于stack exchange,提问作者Nitin Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:30:12