用regex Java替换特殊字符

时间:2017-08-07 10:28:59

标签: java regex

寻找一些帮助来找到如何替换最后的"。"通过java中的regex将char添加到其他字符串中。我有这样的代码,它不起作用。任何建议。

"//myserver.com//NAGA.CSV".replaceAll(".$","_2.")

输出 //myserver.com//NAGA_2.CSV

2 个答案:

答案 0 :(得分:3)

您可以使用前瞻,找到字符串的结尾,前面是除dot之外的字符。

yourString.replaceAll("\\.(?=[^.]*$)", "replacement");

请注意,第一个点需要使用反斜杠进行转义,因为dot在正则表达式中具有特殊含义(它匹配任何字符)。第二个点不需要转义,因为特殊含义不适用于方括号。

(?= )结构意味着“后跟此” - 换句话说,您匹配的点后面可以跟任意数量的非点字符,然后是字符串的结尾。这些额外的角色不被视为比赛的一部分。

答案 1 :(得分:0)

这不是正则表达式,但您可以使用String.lastIndexOf()方法获取char的最后一次出现的位置,并使用String.substring创建新的String:

String yourString = "test.csv";
String newValue = "_2.";
int lastOccurence = yourString.lastIndexOf(".");
String replacedString = yourString.substring(0, lastOccurence) + newValue + yourString.substring(lastOccurence + 1);