用正则表达式替换特殊字符Java
问题描述:
寻找一些帮助来找到如何替换最后一个“。”。在java中通过正则表达式将字符转换为其他字符串。我有这样的代码不起作用。任何建议。用正则表达式替换特殊字符Java
"//myserver.com//NAGA.CSV".replaceAll(".$","_2.")
输出: //myserver.com//NAGA_2.CSV
答
你可以使用一个前瞻,查找的字符串,比点其他字符之前结束。
yourString.replaceAll("\\.(?=[^.]*$)", "replacement");
注意,第一点需要用反斜杠转义,因为点在正则表达式(它匹配任何字符)的特殊含义。第二个点不需要转义,因为特殊含义不适用于方括号。
(?= )
结构的意思是“后跟此” - 换句话说,您匹配的点后面可以跟着任意数量的非点字符,然后是字符串的末尾。这些额外的字符不被视为比赛的一部分。
答
这不是一个正则表达式,但你可以使用String.lastIndexOf()
方法,让您的字符的最后一次出现的位置,并使用String.substring
来创建新的字符串:
String yourString = "test.csv";
String newValue = "_2.";
int lastOccurence = yourString.lastIndexOf(".");
String replacedString = yourString.substring(0, lastOccurence) + newValue + yourString.substring(lastOccurence + 1);
['“//myserver.com //NAGA.CSV".replaceFirst("""..??.*\.)""""""" 2.")'](https://ideone.com/JTalEH) –
此外[替换最后一部分(string)(https://stackoverflow.com/questions/1660034/replace-last-part-of-string) – Flown