正则提取${name} 中的name

由于某些地方要用${变量名}来在一段文字中代表变量,然后在具体使用的时候替换变量。 例如短信发送的短信模板。

1了解正则

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

首先你的对正则有一定的了解。

(?=pattern)正向肯定预查(look ahead positive assert),在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)“能匹配"Windows2000"中的"Windows”,但不能匹配"Windows3.1"中的"Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?<=pattern)反向(look behind)肯定预查,与正向肯定预查类似,只是方向相反。例如,"`(?<=95

2开始使用

(?<=\$\{)(.*?)(?=\})

这就是查找的正则

在这里插入图片描述

(?<=\$\{)
这是反向(look behind)肯定预查  意思就是匹配${ 开头的字符串
(.*?)
这是匹配所有字符串 且最小匹配
(?=\})
正向肯定预查

java 代码

  public static void main(String[] args) {
        String reStr = "(?<=\\$\\{)(.*?)(?=\\})";
        String findText = "你好,尊敬的${name}客户,你预约的《${course}》即将开课。";
        //这里调用 糊涂工具库
        ArrayList<String> all = ReUtil.findAll(reStr, findText, 0, new ArrayList<>());
        System.out.println("查询到的变量:" + all.toString());
        String name = "张三";
        String course = "张三来学java";
        String res =  findText.replaceFirst("\\$\\{name}", name );
        res = res.replaceFirst("\\$\\{course}", course );
        System.out.println(res);
    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v8gNhxFr-1650508241284)(C:\Users\张志鹏\AppData\Roaming\Typora\typora-user-images\image-20220421103022812.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值