正则表达式匹配${key}并在Java中使用的详细方法
1.正则表达式匹配${key}
\$\{([a-z]+)\}
能够匹配字符串中以${key}形式的文本(其中key为小写英文字母)
.*\$\{([a-z]+)\}.*
可以用来检测文本中是否有${key}形式的文本
解释如下:
.
匹配除换行符\n
之外的任何单字符
*
匹配前面的子表达式零次或多次 要匹配*
字符,请使用\*
{
标记限定符表达式的开始。要匹配 {
,请使用 \{
[a-z]
匹配小写字母
+
匹配前面的子表达式一次或多次。要匹配+
字符,请使用\+
;+
限定是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?
就可以实现非贪婪或最小匹配。
()
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \(
和 \)
下图展示了括号的选择作用
2.在Java中使用正则表达式匹配${key}
这里直接贴代码了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
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 如何使用正则表达式去除前导0
- java利用正则表达式处理特殊字符的方法实例
- Java正则表达式的实例操作指南
- Java使用正则表达式检索、替换String中特定字符和正则表达式的一切
- java正则表达式之Pattern与Matcher类详解
- JAVA正则表达式及字符串的替换与分解相关知识总结
转载: https://www.jb51.net/article/206993.htm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义