我是靠谱客的博主 愤怒黑裤,最近开发中收集的这篇文章主要介绍正则提取${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张志鹏AppDataRoamingTyporatypora-user-imagesimage-20220421103022812.png)]

最后

以上就是愤怒黑裤为你收集整理的正则提取${name} 中的name的全部内容,希望文章能够帮你解决正则提取${name} 中的name所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部