用Java替换字符串中的所有"("和")"

Nee*_*raj 6 java regex string replaceall

如何用Java中的fullstop替换字符串中的所有"("和")"?我试着用以下方式:

String url = "https://bitbucket.org/neeraj_r/url-shortner)";
url.replaceAll(")", ".");
url.replaceAll(")", ".");
Run Code Online (Sandbox Code Playgroud)

但它不起作用.错误是:

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)
Run Code Online (Sandbox Code Playgroud)

我认为这个问题也存在于所有正则表达式中.\之前添加)不起作用.

ben*_*y23 17

你可以一次性使用replaceAll:

url.replaceAll("[()]", ".")
Run Code Online (Sandbox Code Playgroud)

说明:

  • [()]匹配两者(并且),括号不需要在[]组内转义.

编辑(由@Keppil指出):

另请注意,url替换时不会更改String ,它只返回带有替换的新String,因此您必须执行以下操作:

url = url.replaceAll("[()]", ".");
Run Code Online (Sandbox Code Playgroud)


mun*_*ngm 12

你需要逃避'('')'"\\(""\\)"分别为:

url = url.replaceAll("\\)", ".");  
url = url.replaceAll("\\(", ".")
Run Code Online (Sandbox Code Playgroud)


Kep*_*pil 7

replaceAll()期望regex作为第一个参数,并且parantheses在那里具有特殊意义.

replace()改为使用:

String url = "https://bitbucket.org/neeraj_r/url-shortner)";
url = url.replace("(", ".").replace(")", ".");
Run Code Online (Sandbox Code Playgroud)

请注意,该url =部件对于保存更换结果非常重要.由于Strings是不可变的,原始版本String不会更改,但会创建一个新版本.为了保持结果url需要指向这一个.