我不擅长正则表达式,我需要帮助来替换字符串。
String str = "Name_XYZ_";
str = "XYZ_NAME_";
那么如何用空字符串替换上面两个字符串中的 "Name_"
或 "_NAME_"
呢?
条件是“Name”
可以是任何情况,并且可以位于索引0
或任何索引,但前面有“_”
。
到目前为止我已经尝试过,
String replacedString = str.replaceAll("(?i)Name_", ""); // This is not correct.
这不是作业。我正在处理需要此类处理的 XML 文件。
最佳答案
String replacedString = str.replaceAll("(?i)(?:^|_)name_", "");
你很接近。你需要做的是或者anchor name
到字符串的开头(使用 ^
)或 那里需要一个下划线。我还将 Name
更改为 name
,因为如果您无论如何都不区分大小写地处理模式,为什么要混合大小写呢。请注意, ?:
只是一种优化(也是一个很好的实践)。它抑制capturing在这种情况下您不需要。
如果你想提高你的正则表达式技能,我强烈推荐 this tutorial .
关于java - 带条件的字符串replaceAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13772399/