关于用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;
}

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题