正则表达式迭代元字符*(星号)不起作用

时间:2014-07-24 15:01:13

标签: java regex

编写下面的正则表达式代码将String 01,02替换为'01','02'或01,02,03替换为'01','02','03'等。

String str = "01,02";

str = str.replaceAll("([^,]+)(,|$)", "'$1'$2");

// value of str successfully changed to '01','02'

但是,它不适用于迭代元字符*而不是+,如下所示

String str = "01,02";

str = str.replaceAll("([^,]*)(,|$)", "'$1'$2");

// value of str remains 01,02

请澄清一下。对于上述模式,是否有更好的正则表达式匹配器。

1 个答案:

答案 0 :(得分:0)

String str = "01,02";

str = str.replaceAll("([^,]*)(,|$)", "'$1'$2");

System.out.println(str);

跑完上面后我得到了

'01','02'''

因为表达式([^,]*)(,|$)表示也不匹配任何行和结尾,这最后一个语句将产生''字符串