正则表达式匹配${key}并在Java中使用的详细方法_正则表达式

来源:脚本之家  责任编辑:小易  

1.正则表达式匹配${key}

\$\{([a-z]+)\} 能够匹配字符串中以${key}形式的文本(其中key为小写英文字母)

.*\$\{([a-z]+)\}.* 可以用来检测文本中是否有${key}形式的文本

解释如下:

. 匹配除换行符\n之外的任何单字符

* 匹配前面的子表达式零次或多次 要匹配*字符,请使用\*

{ 标记限定符表达式的开始。要匹配 {,请使用 \{

[a-z] 匹配小写字母

+匹配前面的子表达式一次或多次。要匹配+字符,请使用\+;+限定是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

()标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \(\)

下图展示了括号的选择作用

2.在Java中使用正则表达式匹配${key}

这里直接贴代码了

package test;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Author Song
 * @Date 2021/2/26 16:55
 * @Version 1.0
 * @Description
 */
public class TestUtil {
  /**
   * 利用好其预编译功能,可以有效加快正则匹配速度
   */
  public static Pattern dynamic = Pattern.compile(".*\\$\\{([a-z]+)\\}.*");
  public static Pattern dynamicLimitCount = Pattern.compile("\\$\\{([a-z]+)\\}");

  /**
   * 判断内容中是否包含动态参数(${key}形式的)
   *
   * @param content 要判断的内容
   * @return
   */
  public static boolean isContainsDynamicParameter(String content) {
    return dynamic.matcher(content).matches();
  }

  /**
   * 按照动态内容的参数出现顺序,将参数放到List中
   *
   * @param content
   * @return
   */
  public static List<String> getKeyListByContent(String content) {
    Set<String> paramSet = new LinkedHashSet<>();
    Matcher m = dynamicLimitCount.matcher(content);
    while (m.find()) {
      paramSet.add(m.group(1));
    }
    return new ArrayList<>(paramSet);
  }


  public static void main(String[] args) {
    //测试代码
    String content = "尊敬的${name}客户您好,请于${time}前到达";
    System.out.println(isContainsDynamicParameter(content));
    List<String> keyListByContent = getKeyListByContent(content);
    System.out.println("内容中的动态参数为:");
    keyListByContent.forEach(System.out::println);
  }
}

测试代码的运行结果如图

参考

菜鸟教程-正则表达式

到此这篇关于正则表达式匹配${key}并在Java中使用的详细方法的文章就介绍到这了,更多相关正则表达式匹配${key}内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:Java基于正则表达式实现查找匹配的文本功能【经典实例】java正则表达式四种常用的处理方式(匹配、分割、替代、获取)Java正则表达式匹配电话格式JAVA中正则表达式匹配,替换,查找,切割的方法java正则表达式匹配网页所有网址和链接文字的示例javascipt匹配单行和多行注释的正则表达式

  • 本文相关:
  • linux grep与正则表达式使用介绍
  • 解读邮箱正则表达式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\
  • 正则表达式教程之子表达式用法分析
  • js 正则表达式(学习笔记2)匹配网址url参数
  • 浏览器中的正则表达式陷阱说明
  • java正则表达式基础入门知识
  • 正则表达式 运算符优先级介绍
  • 正则表达式提取图片路径 并过滤掉指定字符的写法
  • 正则表达式在ios中的应用及ios中三种正则表达式的使用与比较
  • vs里的正则表达式的替换技巧
  • 如何用正则表达式进行匹配 java
  • java正则表达式的使用
  • 请问JAVA中正则表达式匹配怎么实现的!
  • java中使用正则表达式来匹配(1/2),正则表达式怎么写?
  • java 正则表达式怎么用啊
  • 我想在java代码中匹配字符串,用正则表达式,代码...
  • Java中用正则表达式对于输入数据的匹配和解析,求助!
  • java 怎么利用正则表达式从给定的字符串中取出匹配...
  • java正则表达式中[&&]用法
  • Java正则表达式使用
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页java基于正则表达式实现查找匹配的文本功能【经典实例】java正则表达式四种常用的处理方式(匹配、分割、替代、获取)java正则表达式匹配电话格式java中正则表达式匹配,替换,查找,切割的方法java正则表达式匹配网页所有网址和链接文字的示例javascipt匹配单行和多行注释的正则表达式linux grep与正则表达式使用介绍解读邮箱正则表达式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\正则表达式教程之子表达式用法分析js 正则表达式(学习笔记2)匹配网址url参数浏览器中的正则表达式陷阱说明java正则表达式基础入门知识正则表达式 运算符优先级介绍正则表达式提取图片路径 并过滤掉指定字符的写法正则表达式在ios中的应用及ios中三种正则表达式的使用与比较vs里的正则表达式的替换技巧java 正则表达式详解正则表达式匹配任意字符(包括换比较正宗的验证邮箱的正则表达式最新手机号码、电话号码正则表达javascript 手机号码正则表达式验正则表达式匹配不包含某些字符串js利用正则配合replace替换指定字正则中需要转义的特殊字符小结js正则函数match、exec、test、s匹配中文汉字的正则表达式介绍求个简单正则浅谈正则表达式中的分组和引用实现方法匹配 ip 地址与域名的正则表达式asp 正则函数替换分页后的参数正则限制文本输入正则应用之 逆序环视探索 .js正则表达式匹配检测各种数值类型(数字验js正则表达式 匹配两个特定字符间的内容示浅析正则表达式java/js下使用正则表达式匹配嵌套html标签
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved