正则匹配所有#{}类型入参是否符合自定义枚举类型

本文介绍了一个Java场景,用户自定义模板中部分内容需遵循预设的枚举值,采用#{枚举值}格式。通过正则表达式匹配所有#{...}并确保内容符合枚举类型。在代码实现中,从请求内容中提取字段,使用正则获取匹配项,再通过枚举的valueOf方法进行验证。
摘要由CSDN通过智能技术生成

1.场景:用户可以自定义模板,但是部分模板内容必须按照我指定的枚举值

自定义的枚举类,跟前端交互时规定使用#{枚举值}的写法。

 2.首先写一个匹配所有#{}的正则

    java.util.regex.Pattern p = java.util.regex.Pattern.compile("\\#\\{[a-zA-Z_].*?\\}");
    java.util.regex.Matcher m = p.matcher(str);
    while (m.find()){
        String group = m.group();
        System.out.println(group);
    }
}

Pattern就是正则表达式的修饰符

献上源码:

 大致意思就是说上面regexp两个方法效果一样,然后默认是通过US-ASCll码一个字符一个字符来转换匹配的,当然在DEBUG模式下也能清楚地看到。

3.这里是具体方法 我把正则定义成一个常量 方便调用(有一个坑 如果是#{#{}})包含的情况下无法正确匹配 嘛 ,目前用不到这种写法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值