字符串replaceAll有条件

时间:2012-12-07 23:02:13

标签: java regex string replaceall

我在正则表达式方面不太好,我需要帮助来替换字符串。

String str = "Name_XYZ_";
       str = "XYZ_NAME_";

那么如何用空字符串替换上面两个字符串的"Name_""_NAME_"? 条件"Name"可以是index 0,可以是preceded by "_",也可以是String replacedString = str.replaceAll("(?i)Name_", ""); // This is not correct. 的任何索引。

到目前为止,我试过了,

{{1}}

这不是作业。我正在处理需要这种处理的XML文件。

2 个答案:

答案 0 :(得分:1)

String replacedString = str.replaceAll("(?i)(?:^|_)name_", "");

你很亲密。您需要做的是 anchor name到字符串的开头(^需要下划线。我还将Name更改为name,因为如果您无论如何都要处理不区分大小写的模式,为什么要混合大小写。请注意,?:只是一种优化(并且是一种很好的做法)。它会抑制在这种情况下您不需要的capturing

如果您想提高正则表达能力,我强烈推荐this tutorial

答案 1 :(得分:-1)

我正在使用.NET的正则表达式而不是Java,但在这种情况下(_?Name_)应该可以正常工作。