关于用java中正则表达式匹配单个字符

例如需要在字符串

String str = "././././a/./bc/de\\../fghi\..\./jklm/.";

中匹配到".",并且删除。但是不匹配到".."。

相关问题我只搜索到一个用捕获组解决,我稍微改了一下代码:

String regex = "(^|[^\\.])(\\.)($|[^\\.])";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
m.find();
str = m.replaceAll("$1$3");

不过这样做的话,会使连续的"././././././."中有几个"."无法匹配到。

请问要如何解决呢?

阅读 3.3k
1 个回答

啊。。。。还是自己搞出来了。

String delSingleDot(String str){
    String regex = "(^|[^\\.])(\\.)($|[^\\.])";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(str);
    for(;m.find()!=false;m=p.matcher(str)){
        str = m.replaceAll("$1$3");
    }
    return str;
}

需要的朋友拿去用吧。。。

推荐问题