正则提取${name} 中的name

正则提取${name} 中的name,第1张

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

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);
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/720884.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存