我正在尝试将字符串拆分为:,"{[ }]
上的列表库
这是我的代码,
List<String> list = new ArrayList<String>(Arrays.asList(line.split("{ | } | \\"| : | [ | ]|,")));
哪个没有编译。我并不擅长正则表达式。请帮忙。
答案 0 :(得分:4)
你的意思是你希望它“分开”,只要你看到:或,或“或{或[或}或]”?如果是这样,你真的不需要多说:
.split("[:,\"{\\[ }\\]]")
即。 “拆分以下字符类定义中的任何字符::,"{[ }]
”,我们使用标准的正则表达式字符类定义语法([...]
)并进行适当的转义。
通常这意味着一个看起来像/[:,"{\[ }\]]/
的正则表达式,但是因为你在正常字符串的里面写了一个正则表达式,所以需要更多转义:"
需要常规字符串转义,因此你的字符串不会过早结束(因此变为\"
),[
和]
是正则表达式中的活动字符,因此它们需要\
< em>在正则表达式。但是,我们不能只将\
放在字符串中并让它工作,因为\
是转义字符,因此我们需要“逃避转义”,这意味着使用\\
(给出\\[
和\\]
)。
String[] result = "a:b,c\"d{e[f g}h]i".split("[:,\"{\\[ }\\]]");
System.out.print(result.length);
// => result has 9 elements in it, ['a',...,'i']
答案 1 :(得分:1)
它没有编译,因为你没有逃避引号,而是反斜杠本身。
变化:
\\"
要:
\"