我正在尝试用字符“(”分割Java字符串。
例如:
split(“ wer(sde”)=“ wer” +“ sde”。
但是它给出了例外。有没有一种方法可以使用split()函数拆分此字符串,而无需将字符“(”更改为其他字符。
String[] cp=cmd.split("{");
输出: 线程“主”中的异常java.util.regex.PatternSyntaxException:非法重复
答案 0 :(得分:4)
问题是,split()
接收一个正则表达式作为参数。 {}
和()
都是元字符,在正则表达式中具有特殊含义,因此您需要像这样对它们进行转义:
String[] cp = cmd.split("\\(|\\)");
答案 1 :(得分:3)
String
中的方法split
接受一个String
,该参数是一个正则表达式:
public String[] split(String regex) Splits this string around matches of the given regular expression.
由于(
是正则表达式中的保留字符,因此您需要对其进行转义\(
。
但是在Java中,您需要转义两次\\(
,一次转义String
,第二次转义正则表达式
这给出了:
s.split("\\(");
答案 2 :(得分:1)
括号在RegEx中表示某种含义,它们用于将字符分组在一起。因此,如果要引用文字字符'('
,则必须在RegEx中将其转义:
String[] cp = cmd.split("\\(");
请注意使用两个反斜杠。这是因为JVM还将转义反斜杠作为元字符以进行转义,因此您必须转义用另一个反斜杠本身转义反斜杠,以便使其进入RegEx。