正面回顾正则表达式

时间:2018-01-23 15:00:57

标签: java regex

我有一个像这样的字符串:

String sample = "name:Bob | time:2:20";

我正在练习正则表达式并尝试使用以下代码尝试从2:20删除“:”

sample = sample.replace("(?<=0-9):","");

正则表达式在哪里不正确,因为它似乎不起作用。

1 个答案:

答案 0 :(得分:1)

这应该有效:

sample = sample.replaceAll("(?<=[0-9]):", "");

但是通过使用捕获组而不是lookbehinds可以提高效率:

sample = sample.replaceAll("([0-9]):", "$1");

其中[0-9]是由[character class]0的字符范围组成的9,其中我们将(capturing group)分组到$reference内替换模式中基于索引的::我们不是用空字符串替换foreach,而是用数字替换数字和跟随冒号。