Java:同一'片段'中的RegEx多个匹配

时间:2017-04-11 03:37:33

标签: java regex

我正在尝试编写一个RegEx,它将捕获字符串“csv,csv,csv,csv”中逗号分隔的'csv'实例,并替换为“xml”。

所以我的输出是“csv,xml,xml,csv”。

我遇到的问题是我的RegEx只捕获csv的第一个实例,并且因为第一个匹配结束时的'逗号'也是第二个匹配的第一个分隔符,所以它不会被捕获。

RegEx =“,csv,”(非常简单的例子)。

示例2:

RegEx =“(,狗,)”

输入“狗,狗,狗,狗”

输出“狗,猫,猫,狗”

编辑:我找到了我想要的东西,使用前瞻和后瞻。 RegEx =“(?< =,)dog(?=,)”就行了。

2 个答案:

答案 0 :(得分:0)

利用环视:

替换

(?<=,)xml(?=,)

csv

演示https://regex101.com/r/ft7SQT/1

答案 1 :(得分:0)

使用环顾四周,断言,但不要消耗:

String replaced = str.replaceAll("(?<=,)csv(?=,)", "xml");