如何自定义正则表达式提取${}占位符内的字符串内容
正则调整方案
你原先写的.{(.*.*)}存在两个明显问题:一是没有匹配前置的$符号,遇到其他{xxx}结构容易误匹配;二是.*.*属于冗余写法,也没有做边界限制。
调整后可直接提取${}中间内容的正则如下:
\$\{(.*?)\}
匹配规则说明
\$:转义匹配字面量$,避免被正则识别为行尾定位符\{:转义匹配左大括号,避免被识别为量词标识(.*?):非贪婪匹配{}之间的所有内容,作为第一个捕获组返回,你直接取分组1的结果即可得到ITEM_NAME\}:转义匹配右大括号,做匹配右边界限定
如果你的正则运行环境支持零宽断言,还可以用下面的写法,不需要额外提取捕获组,直接返回匹配结果:
(?<=\$\{).*?(?=\})
测试验证
针对你提供的测试字符串"lore epsum dimsum ${ITEM_NAME} wonton kimchi",上述两个正则都可以精准提取到你需要的ITEM_NAME内容。
内容的提问来源于stack exchange,提问作者Farhan Shafi
相关产品推荐
相关产品推荐

