如何用“(”分割Java字符串?

时间:2019-06-26 06:09:00

标签: java regex string split

我正在尝试用字符“(”分割Java字符串。

例如:

  

split(“ wer(sde”)=“ wer” +“ sde”。

但是它给出了例外。有没有一种方法可以使用split()函数拆分此字符串,而无需将字符“(”更改为其他字符。

String[] cp=cmd.split("{");

输出: 线程“主”中的异常java.util.regex.PatternSyntaxException:非法重复

3 个答案:

答案 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。