在每个序列的末尾替换数字

时间:2015-12-31 18:28:42

标签: java regex

我有一个id:status序列的字符串。状态为0,1或2.我正在寻找一种方法来替换新的状态。

例如:

{{1}}

如您所见,我必须做两次替换以确保为id设置了正确的状态。这不仅没有效率,比如有一个id 11234,这也会改变这种状态。

正则表达式是什么样的,以确保它只匹配确切的id和一个语句来替换状态?

2 个答案:

答案 0 :(得分:2)

您可以使用字符类[02]来匹配02,以及字边界\b,以便1234:2可以匹配,{{ 1}}不能:

11234:2

请在此处查看regex demo

如果topicStatusString = topicStatusString.replaceAll("\\b" + someId+":[02]\\b", someId+":1"); 中有数字,则无需使用someId,但在其他情况下这是个好主意。

答案 1 :(得分:0)

您可以使用单词边界标记(\ b)和match-any(。)正则表达式功能使replaceAll()执行您需要的操作。例如:

1234:0,567:1,89:2,11234:2
1234:1,567:1,89:2,11234:2

结果:

{{1}}