如何编写正则表达式提取数字结尾表名+%%列名%%格式内容?
正确正则方案及问题分析
目标匹配规则
需要提取的内容格式为:字母开头+数字结尾的表名 + 点号 + %%包裹的列名
正确正则表达式
[a-zA-Z]+\d+\.\%%[a-zA-Z]+\%%
如果列名允许包含数字或下划线,可调整为更通用的版本:
[a-zA-Z]+\d+\.\%%[a-zA-Z0-9_]+\%%
正则各部分解释
[a-zA-Z]+:匹配表名的字母前缀(至少1个字母,如CUSTOMER、CREDIT)\d+:匹配表名末尾的数字(至少1个数字,如1)\.:匹配表名与列名之间的点号(必须转义,否则.会匹配任意字符而非实际点号)%%:匹配列名的前后包裹符号(%不是正则特殊字符,无需转义)[a-zA-Z]+:匹配%%之间的列名字母(若需支持其他字符,替换为对应规则即可)
原正则的问题
你之前使用的[a-zA-Z*][0-9].\%%.*?\%%存在以下缺陷:
[a-zA-Z*]仅匹配单个字母或*,无法匹配多字母组成的表名前缀[0-9]仅匹配单个数字,无法适配多位数字结尾的表名- 未转义的
.会匹配任意字符,而非实际的点号 \%%属于多余转义,%无需转义.*?会匹配任意字符直到下一个%%,容易包含无关内容
测试结果
用目标文本GET_INFO(CUSTOMER1.%%NAME%%='TEST' AND CREDIT1.%%AMOUNT%%>1000)=1测试,可成功提取:
CUSTOMER1.%%NAME%%CREDIT1.%%AMOUNT%%
内容的提问来源于stack exchange,提问作者ilhan
相关产品推荐
相关产品推荐

