正则表达式中“*”的作用是什么?

时间:2009-02-03 14:24:51

标签: java regex

我的Java源代码:

String result = "B123".replaceAll("B*","e");
System.out.println(result);

输出为:ee1e2e3e。 为什么呢?

3 个答案:

答案 0 :(得分:21)

'*'表示前一个字符的零个或多个匹配项。因此每个空字符串将替换为“e”。

您可能想要使用'+'代替:

  

replaceAll("B+", "e")

答案 1 :(得分:7)

你想要这个模式:

B+

您的代码将是:

String result = "B123".replaceAll("B+","e");
System.out.println(result);

“*”匹配“零或更多” - 而“零”包括B之前以及所有其他字符之间的任何内容。

答案 2 :(得分:1)

我花了一个多月的时间在一家大型科技公司工作,在正则表达式中修复*(splat!)的错误。我们维护了一个鲜为人知的UNIX OS。我的头几乎爆炸,因为它匹配与角色遭遇的零事件。谈谈通过自己的重新创建来理解的难题。在某些情况下,我们是双重替代。我无法弄清楚为什么代码是错误的,但是能够添加捕获特殊(错误)情况的代码并防止双子攻击并且没有破坏任何包含它的实用程序(包括sed和awk)。我很自豪能够修复这个错误,但正如已经提到的那样。

为了上帝的缘故,只需使用 + !!!!