如何更换所有的“(”和“)”中有句点的字符串,在Java中? 我想通过以下方式:
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)
我觉得这个问题将在那里所有的正则表达式了。 添加\
之前)
没有工作。
Answer 1:
您可以在一个随时随地使用的replaceAll:
url.replaceAll("[()]", ".")
说明:
-
[()]
同时匹配(
和)
,托架不需要内部转义[]
基团。
编辑(如@Keppil指出):
还要注意,该字符串url
不会被改变的替代,它仅仅返回与更换一个新的String,所以你必须要做到:
url = url.replaceAll("[()]", ".");
Answer 2:
你需要逃跑'('
和')'
与"\\("
和"\\)"
分别为:
url = url.replaceAll("\\)", ".");
url = url.replaceAll("\\(", ".")
Answer 3:
replaceAll()
需要一个regex
作为第一个参数,括号具有特殊的意义存在。
使用replace()
代替:
String url = "https://bitbucket.org/neeraj_r/url-shortner)";
url = url.replace("(", ".").replace(")", ".");
需要注意的是url =
部分是很重要的,以节省更换的结果。 由于String
s为不可变的 ,原始的String
不改变,而是创建一个新的。 为了保证结果url
需要指向这一个代替。
Answer 4:
- 字符串是不可改变的。
-
)
应与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.
Answer 5:
添加单个\
是行不通的,因为这将尝试评估\)
作为转义特殊字符,事实并非如此。
你需要使用“\)”。 第一\
转义第二,产生一个“正常” \
,这又逸出)
,产生一个正则表达式精确匹配的闭合paranthesis )
。
通用解决方案是使用Pattern.quote
,它接受一个任意字符串并返回完全匹配该字符串正则表达式。
Answer 6:
你也可以使用org.apache.commons.lang.StringUtils.replace(字符串,字符串,字符串)不使用正则表达式
来自Apache的公共图书馆http://commons.apache.org/
Answer 7:
方法String#replaceAll
预计正则表达式, (
以及)
的特殊字符(标记组),所以你需要逃避他们成为非特殊url.replaceAll("\\)", ".");
。
也可以用图案一次更换这两个字符url.replaceAll("[()]", ".");
。 你可以看到,在此背景下,括号没有逃脱。 这是因为正则表达式上下文-内[]
他们没有任何特殊含义。
看的JavaDoc以获得更多信息。
Answer 8:
因为)
是正则表达式的性格,所以你需要逃避它。 尝试这个:
url.replaceAll("\)", "\.");
Answer 9:
采用
url.replaceAll("\\)", ".").replaceAll("\\(", ".");;
文章来源: Replace all “(” and “)” in a string in Java