使用带有java string.replace的正则表达式

时间:2011-03-31 07:39:02

标签: java regex string

我有两个问题。

1:

String = xx yy **

我想删除“xx”,因此String变为=“yy * ”(xx / yy是固定的,* 可以是任何东西) 我试过这样的东西,但它不起作用:

string.replaceall("^(xx )$", "");

这不应该用“”替换“xx”的第一次出现吗?

求助(卢卡斯)

2:

String = xx yy **

我想删除“yy **”,以便String变为=“xx” 我认为这样的事情,但由于第一次没有用,我认为这也不会。

string.replaceall("^( yy)*$", "");

未解

我实际上把这个说得不够充分,

xx应为**

所以xx没有修复

** yy ** 应该成为**这是第一个**

2 个答案:

答案 0 :(得分:3)

在这两种情况下,您在尝试替换之前和之后都使用^$。这会尝试将整个字符串与要删除的位匹配。这就是为什么它没有删除任何东西。

如果您真的只想替换xx第一次出现,您应该考虑创建一个Pattern,将其与文本进行匹配,并使用{{ 1}}执行替换。

答案 1 :(得分:0)

试试问题1:

string.replaceFirst("^xx ", "");

第二个:

string.replaceFirst(" yy .*$", "");

编辑: 如果正则表达式不是必须的,我们可以将它用于第二个:

string.substring(0, string.indexOf(" yy");

EDIT2:如果'\ n'将包含在字符串中,则适用于第二个:

string.replaceFirst(" yy [\\w\\W]*$", "");