有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

正则表达式替换Java中字符串中的所有“(“and”)”

在Java中,如何用句号替换字符串中的所有“(“and”)?我尝试了以下方法:

String url = "https://bitbucket.org/neeraj_r/url-shortner)";
url.replaceAll(")", ".");
url.replaceAll(")", ".");

但它不起作用。错误是:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unmatched closing
')'
 )
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at com.azzist.cvConversion.server.URLChecker.main(URLChecker.java:32)

我认为这个问题在所有正则表达式中也会存在。在)之前添加\无效


共 (6) 个答案

  1. # 1 楼答案

    你需要分别用"\\(""\\)"来转义'('')'

    url = url.replaceAll("\\)", ".");  
    url = url.replaceAll("\\(", ".")
    
  2. # 2 楼答案

    ^{}期望regex作为第一个参数,而偏执在那里有特殊的意义

    改用^{}

    String url = "https://bitbucket.org/neeraj_r/url-shortner)";
    url = url.replace("(", ".").replace(")", ".");
    

    请注意url =部分对于保存替换结果很重要。由于String不可变的,所以原始的String没有改变,而是创建了一个新的。要保留结果url需要指向这个

  3. # 3 楼答案

    1. 字符串是不可变的
    2. )应该用两个反斜杠转义

    所以代码如下所示:

    String url = "https://bitbucket.org/neeraj_r/url-shortner)";
    // is you need to escape all of them, use "[()]" pattern, instead of "\\)"
    String s = url.replaceAll("\\)", "."); 
    System.out.println(url);
    System.out.println(s);
    

    以及输出:

    https://bitbucket.org/neeraj_r/url-shortner)
    https://bitbucket.org/neeraj_r/url-shortner.
    
  4. # 4 楼答案

    您可以一次性使用replaceAll:

    url.replaceAll("[()]", ".")
    

    说明:

    • [()]匹配(),括号不需要在[]组内转义

    编辑(正如@Keppil所指出的):

    还要注意的是,字符串url不会被replace更改,它只会返回一个带有replace的新字符串,因此您必须执行以下操作:

    url = url.replaceAll("[()]", ".");
    
  5. # 5 楼答案

    添加单个\将不起作用,因为这将尝试将\)作为转义特殊字符进行计算,而它不是

    你需要使用“\)”。第一个\逃逸第二个,产生一个“正常的”\,而正常的)又逃逸第二个),产生一个与结束语)完全匹配的正则表达式

    通用解决方案是使用^{},它接受任意字符串并返回与该字符串完全匹配的正则表达式

  6. # 6 楼答案

    你也可以使用org。阿帕奇。平民朗·斯特林古提斯。替换不使用正则表达式的(String,String,String)

    来自apache commons库http://commons.apache.org/