正则表达式匹配${key}并在Java中利用的具体要领

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

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

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

表明如下:

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

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

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

[a-z] 匹配小写字母

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

()标志一个子表达式的开始和竣事位置。子表达式可以获取供今后利用。要匹配这些字符,请利用 \(和 \)

下图展示了括号的选择浸染

正则表达式匹配${key}并在Java中操作的详细方式

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中利用的具体要领的文章就先容到这了,更多相关正则表达式匹配${key}内容请搜索剧本之家以前的文章或继承欣赏下面的相关文章但愿各人今后多多支持剧本之家!

您大概感乐趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdsww.html