2017-02-17 105 views
0

我想分割字符串"}{"。不过我得到一个错误:Scala模式语法异常

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

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

回答

2

嗯...的原因是split对待它的参数字符串为正则表达式。

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

所以,你将不得不跳过正则表达式世界的特殊字符split的说法,这样,

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

逃离{

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

有两种方法可以强制元字符被当作普通字符:

- >在元字符前加一个反斜杠。 - 将其包含在\ Q(它开始引用)和\ E(结束它)内。 使用此技术时,\ Q和\ E可放置在表达式内的任何位置,前提是\ Q首先出现。

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

output: 
[one, two]