提取scaext:simpleValue属性值的正则表达式问题(Apache Ant)
解决Apache Ant中提取scaext:simpleValue属性值的正则问题
我来帮你搞定这个正则匹配的小麻烦~你之前的正则因为用了贪婪匹配的.*,导致后面的其他属性也被包含进来了,咱们调整一下正则就能精准提取目标值。
问题根源
你原来的正则(.*)(scaext:simpleValue=)(.*)里,最后一个.*是贪婪匹配,它会尽可能多地抓取从scaext:simpleValue=之后的所有内容,包括后面的source="$SolutionDB",所以才会输出不符合预期的结果。
修正后的正则
我们需要精准匹配双引号内的内容,直到遇到下一个双引号就停止,用这个正则就可以:
scaext:simpleValue="([^"]+)"
[^"]+:表示匹配除双引号之外的任意字符,非贪婪,只会抓取到下一个双引号为止,完美避开后面的其他属性。- 括号
()是捕获组,里面的内容就是你要提取的目标值。
在Apache Ant中的使用示例
结合Ant的<propertyregex>任务,你可以这么写(假设你的输入行存在input.line属性中):
<propertyregex property="extracted.value" input="${input.line}" regexp='scaext:simpleValue="([^"]+)"' select="\1" casesensitive="true"/>
select="\1":表示提取第一个捕获组的内容,也就是scaext:simpleValue双引号里的值。
这样不管目标属性后面有没有其他额外属性,都能准确提取出DealAmendmentsSolutionJDBC啦~
内容的提问来源于stack exchange,提问作者Shrijeet Sinha
相关产品推荐
相关产品推荐

