这是一种更通用的方法,它不要求您提供模式,适用于多个占位符,并且可以匹配多个单词的占位符。比如说,我们有以下模板和输入字符串:

String input = "Hi John Doe, how are you? I'm Jane.";

String template = "Hi $namevar$, how are you? I'm $namevar2$.";

因此,我们首先解析所有占位符名称并将其添加到Map。我们使用Map,以便我们稍后可以将实际的String值指定为键。

Matcher m = Pattern.compile("\\$(\\w*?)\\$").matcher(template);

Map vars = new LinkedHashMap();

while (m.find()) {

System.out.println(m.group(1));

vars.put(m.group(1), null);

}

现在,我们生成模式以将占位符值解析为

String pattern = template;

// escape regex special characters

pattern = pattern.replaceAll("([?.])", "\\\\$1");

for (String var : vars.keySet()) {

// replace placeholders with capture groups

pattern = pattern.replaceAll("\\$"+var+"\\$", "([\\\\w\\\\s]+?)");

}

现在,我们进行匹配并捕获占位符值。然后将这些值存储在上面创建的同一Map中,并将其分配给相应的占位符变量。

m = Pattern.compile(pattern).matcher(input);

if (m.matches()) {

int i = 0;

for (String var : vars.keySet()) {

vars.put(var, m.group(++i));

}

}

现在,让我们通过迭代Map来打印出我们捕获的值

for (Map.Entry entry : vars.entrySet()) {

System.out.println(entry.getKey() + " = " + entry.getValue());

}

输出:

namevar = John Doe

namevar2 = Jane

js 占位符 正则_带占位符的正则表达式相关推荐

  1. 首尾非零正则_常用的17种正则表达式

    17种正则表达式 "^\\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-\\d+)|(0 ...

  2. pgsql 筛选中文字符正则_匹配中文字符的正则表达式

    匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一 ...

  3. 手机号正则_一起刷题学习正则表达式

    在我最开始学习正则表达式的时候看到一堆符号简直头晕,所以很长一段时间我都是百度一下某某正则怎么写,比如:匹配所有手机号码的正则,但是有时候工作中碰到的一些问题网上搜不到,这就尴尬了,后面还是逼着自己花 ...

  4. java mysql 占位符_在Java中编写带占位符的SQL语句

    C#中SQL中带占位符的语句 假设有一张学员信息表Student,通过表中的ID来找学员,查询的SQL语句如下 string sql = string.Format("select * fr ...

  5. html一个汉字空格占位,HTML中汉字空格占位符

    == 普通的英文半角空格 ==   ==   == no-break space (普通的英文半角空格但不换行) == 中文全角空格 (一个中文宽度) ==   == en空格 (半个中文宽度) == ...

  6. python占位符补数据_Python 占位符格式化的简单示例

    这篇文章主要为大家详细介绍了Python 占位符格式化的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 占位符 ...

  7. python换行符号长度_创建带换行符的可调整大小/多行Tkinter/ttk标签

    是否可以使用自动换行创建多行标签,该标签的大小与其父级宽度同步?换句话说,当您更改记事本窗口的宽度时,记事本的换字行为. 用例是一个对话框,它需要完整地呈现多行文本(指令)块,而无需剪裁文本或求助于滚 ...

  8. java中print换行符_如何在java中打印带换行符的字符串

    我需要使用 java打印一个字符串,所以我喜欢以下解决方案经过google搜索了很多.我做了一些更改来打印字符串而不显示打印对话框.我的问题是虽然这个方法正确地打印了字符串,但它不会像我定义的那样破坏 ...

  9. html+正则+换行+回车,正则与回车换行符使用详解

    这次给大家带来正则与回车换行符使用详解,正则与回车换行符使用的注意事项有哪些,下面就是实战案例,一起来看一下. C#中,读取文本文件内容,里面往往有许多回车换行符("\r\n"), ...

最新文章

  1. 硬件开源需求迫切?开源笔电 Nevona 筹款金额达预设目标3倍
  2. Java8 ReentrantLock 源码分析
  3. Navicat Premium创建MySQL存储过程
  4. DAC8563芯片参考手册重要内容总结
  5. OpenShift 4 - Pod是如何使用Serivce Account访问API的
  6. C语言程序所以,C语言程序(1)
  7. 【12-05】面试题
  8. Android仿人人客户端(v5.7.1)——Auth授权认证(整理流程,重构代码)
  9. Android设备间通信(wifi连接)
  10. Oracle数据库中dual是什么东西啊?
  11. mysql返回的数据是什么格式_磁盘格式化后能恢复数据吗?先了解什么是格式化...
  12. MySQL-快速入门(13)MySQL日志
  13. excel求回归直线方程的公式_“如何在excel中求解任意直线的方程“excel绘制线性回归方程...
  14. 悉尼大学BUSS6002Assignment1课业解析
  15. 多租户商城开发 多租户SaaS商城源码下载
  16. 运放输入偏置电流方向_运放中输入偏置电流和输入失调电流的区别??
  17. 公路自行车轮市场前景分析及行业研究报告
  18. gbd的简单使用(一)
  19. 使用addr2line 定位 FORTIFY: vsprintf: prevented write past end of buffer‘ 报错解决思路
  20. 超级实时图形计算机,HyperCalc Graphing Calculator(超级图形计算器)

热门文章

  1. angular中copy和extend用法实例
  2. 真正手把手教你玩转Git
  3. 对应到对象 数据库驼峰_驼峰
  4. PASCAL VOC目标检测数据集格式转化为COCO目标检测数据集格式
  5. Xinetd服务的安装与配置详解
  6. 计算机专业用移动硬盘,评测 篇四十三:国产之光,看这款可做移动硬盘又可系统盘的Orico SSD...
  7. mnist手写数字模型训练、保存、加载及图片预测
  8. 基于WiFi的人体感知
  9. 达达-京东到家完成新一轮5亿美金融资,沃尔玛、京东分别增持
  10. Vega Prime 常见问题集