迭代正则表达式替换中的列表

时间:2013-11-26 12:13:25

标签: regex ant

我有一个带前缀的字符串,后跟至少一个可能为空的后缀的列表。后缀本身以冒号为前缀。前缀和后缀都不能包含任何冒号。

示例(1)为一个空后缀:

x:

示例(2)表示两个非空后缀(“a”和“b”)和一个空后缀:

x:a::b

此模式的regular expression为:

([^:]+)(:([^:]*))*

第一个匹配捕获前缀,第(3 + 2n)个匹配捕获后缀(n = [0,1,2,...])。

在我的替代品中,我想为每个后缀添加前缀。例(1)应该产生:

x

示例(2)应该产生:

xa
x
xb

如何指定替换表达式?

我的问题是,第一个替代品吃了前缀。之后,第二次更换不再看到前缀。我必须保留剩余替换的前缀。怎么办呢?

1 个答案:

答案 0 :(得分:1)

我想我先提取前缀,然后再做第二次替换。这将使代码更容易阅读,并且在那时应该是一个简单的替换。