Scala模式语法异常

时间:2017-02-17 21:31:38

标签: java string scala

我试图用字符"}{"分割字符串。但是我收到了一个错误:

> val string = "{one}{two}".split("}{")
java.util.regex.PatternSyntaxException: Illegal repetition near index 0
}{
^

我不想使用正则表达式或任何东西。我尝试使用"\}\{",但它也无法正常工作。

3 个答案:

答案 0 :(得分:2)

逃离{

val string = "{one}{two}".split("}\\{")

答案 1 :(得分:2)

嗯......原因是split将其参数字符串视为正则表达式。

现在,{}都是正则表达式中的特殊字符。

所以你必须跳过split论证的正则表达式世界的特殊字符,像这样,

val string = "{one}{two}".split("\\}\\{")
// string: Array[String] = Array({one, two})

答案 2 :(得分:0)

有两种方法可以强制将元字符视为普通字符:

- >在元字符前面加一个反斜杠。

String[] ss1 = "{one}{two}".split("[}\\{]+");
System.out.println(Arrays.toString(ss1));   

output:
[one, two]

- >将它包含在\ Q(开始引用)和\ E(结束它)中。    使用此技术时,\ Q和\ E可以放在表达式中的任何位置,前提是\ Q首先出现。

String[] ss2 = "{one}{two}".split("[}\\Q{\\E]+");
System.out.println(Arrays.toString(ss2));   

output:
[one, two]