我在正则表达式方面不太好,我需要帮助来替换字符串。
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文件。
答案 0 :(得分:1)
String replacedString = str.replaceAll("(?i)(?:^|_)name_", "");
你很亲密。您需要做的是 anchor name
到字符串的开头(^
)或需要下划线。我还将Name
更改为name
,因为如果您无论如何都要处理不区分大小写的模式,为什么要混合大小写。请注意,?:
只是一种优化(并且是一种很好的做法)。它会抑制在这种情况下您不需要的capturing。
如果您想提高正则表达能力,我强烈推荐this tutorial。
答案 1 :(得分:-1)
我正在使用.NET的正则表达式而不是Java,但在这种情况下(_?Name_)
应该可以正常工作。