使用正则表达式替换特定模式

时间:2014-10-03 13:42:25

标签: java regex

从一个给定的字符串,我试图替换一个模式,如" sometext.othertext.lasttext"用" lasttext"。这是否可以在Java中使用Regex替换?如果有,怎么样?提前谢谢。

我试过

"hellow.world".replaceAll("(.*)\\.(.*)", "$2") 

导致世界。但是,我想替换任何这样的任意序列。例如,com.google.code应替换为代码,com.facebook应替换为facebook。

只需添加,测试输入是: if(com.google.code)then 测试输出应该是: if(code)then

感谢。

2 个答案:

答案 0 :(得分:0)

使用:

str.replaceAll(".*\\.(\\w+)$", "$1")

解释here

答案 1 :(得分:0)

我相信这就是你要找的,如果你试图避免使用String方法。它可以更简洁,但我希望这会让你更好地理解。

正如其他人所说,字符串方法更清晰。

class Split {
    public static void main (String[] args) {
        String inputString = "if (com.google.code) then";
        Pattern p=Pattern.compile("((?<=\\()[^}]*(?=\\)))"); // Find text within parenthesis
        Pattern p2 = Pattern.compile("(\\w+)(\\))"); // Find last portion of text between . and )

        Matcher m = p.matcher(inputString);
        Matcher m2 = p2.matcher(inputString);
        String in2 = "";
        if (m2.find())
            in2=m2.group(1); // else ... error checking
        inputString = m.replaceAll(in2); // do whatcha need to do
    }
}

如果括号不是问题,请使用此。

class Split {
    public static void main (String[] args) {
        String in = "if (com.google.code) then";
        Pattern p = Pattern.compile("(\\w+)(\\))");
        Matcher m = p.matcher(in);
        if(m.find()) 
            in = m.group(1);
        System.out.println(in); // or whatever
    }
}