ReplaceRegex函数没有完成这项工作

时间:2013-01-16 13:51:42

标签: regex ant properties boost-regex regex-greedy

我想编辑这一行输入,并为Product_A Key添加更多值。

 input="CSDT_FLAG_PRODUCT_FF_FWUIDS=Product_A:45223423;Product_PD:4;Product_CD:345345,22454;Product_F:3423"

我有以下ant replaceregex系列。

replaceregexp file="../cms-distribution/src/main/properties/editorial/common/csdtflags.properties" flags="s" match="Product_A:([^\.]*)([;])?" replace="Product_A:,${uid}\1" byline="true"/>

除了产生的结果之外,这项工作就完成了:

CSDT_FLAG_PRODUCT_FF_FWUIDS=Product_A:+,42e8140a-79ce-4bda-b64a-539bc4a17dbb+,80ab7183-715d-471b-8ae0-b527d2597b06+,......

它从无处插入+符号,其次它替换Product_A中存在的原始值。我想用逗号附加到原始值。我该怎么做呢? 任何帮助赞赏。

由于

1 个答案:

答案 0 :(得分:0)

我不知道关于ant的事情以及它如何处理正则表达式,但我认为问题依赖于正则表达式。你有一个字符串

"CSDT_FLAG_PRODUCT_FF_FWUIDS=Product_A:45223423;Product_PD:4;Product_CD:345345,22454;Product_F:3423"

和正则表达式

/Product_A:([^\.]*)([;])?/

;匹配到字符;的最后一次出现,因此不匹配 Product_A 下的值,请自行查看here

但是,如果您现在 Product_A 键的值始终为8位数字符串,则可以使用此正则表达式:

/Product_A:(.{8});/

()内的匹配组会捕获代码,这是我可以帮助你的,也许这个答案Replacing characters in Ant property有帮助。