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

如何使用Java提取JSP标签中的指定属性键值对

Java提取s:textfield标签指定属性最优实现方案

针对固定格式的Struts2 JSP标签字符串提取场景,不需要引入第三方XML/HTML解析依赖,用JDK原生正则匹配是性价比最高的实现,执行效率高、代码量小,能覆盖标签换行、属性顺序随机、等号前后带空格等常见写法。

实现逻辑

  • 第一步:明确待提取的属性范围:title、cssErrorClass、id、maxlength、name
  • 第二步:编写正则规则,匹配「属性名+任意空白字符+等号+任意空白字符+双引号包裹的属性值」的标准标签结构,通过捕获组分别拿到属性名和对应取值
  • 第三步:遍历所有匹配结果,按要求格式输出即可

完整可运行代码

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

public class JspTagAttrParser {
    public static void main(String[] args) {
        // Java字符串中双引号需要做转义处理,和原始JSP标签内容完全对应
        String s = "<s:textfield title=\"Total\" cssErrorClass=\"err1\" id=\"id_0\" maxlength=\"6\" \n" +
                "      name=\"intTotal\" ></s:textfield>";
        
        // 正则规则:匹配目标属性,兼容等号前后空白、标签跨行场景
        Pattern attrPattern = Pattern.compile("(title|cssErrorClass|id|maxlength|name)\\s*=\\s*\"([^\"]+)\"");
        Matcher matcher = attrPattern.matcher(s);
        
        System.out.println("Example:");
        while (matcher.find()) {
            String attrName = matcher.group(1);
            String attrValue = matcher.group(2);
            // 可根据格式要求调整等号前后的空格数量
            System.out.printf("%s = %s%n", attrName, attrValue);
        }
    }
}

运行输出结果

Example:
title = Total
cssErrorClass = err1
id = id_0
maxlength = 6
name = intTotal

适配场景说明

  • 支持属性任意排序,5个目标属性在标签内的书写顺序不影响提取结果
  • 兼容标签换行、等号前后加任意数量空格/制表符的非严格格式写法
  • 自动忽略标签内其他非目标属性,不会额外提取无关字段
  • 后续如果需要新增提取属性,只需要修改正则第一个捕获组内的属性名列表即可,无需调整核心匹配逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:54:19