考虑字符串real :: sum
我只需将此字符串拆分为以下部分.more opr (&x NE &m),&n+1
,.more
,opr
,(
,&x
,NE
,{{1} },&m
,)
,,
,&n
。简而言之,我需要分割空格和一些特殊符号,如()和算术运算符。
如何在java中为split()编写正则表达式来实现这一点。
答案 0 :(得分:2)
在空格或括号或操作符的两侧分割:
str.split(" |(?<=[,()+-])|(?<! )(?=[,()+-])")
输出:
String str = ".more opr (&x NE &m),&n+1";
System.out.println(Arrays.toString(str.split(" |(?<=[,()+-])|(?<! )(?=[,()+-])")));
是:
[.more, opr, (, &x, NE, &m, ), ,, &n, +, 1]
或者更清楚:
Arrays.stream(str.split(" |(?<=[,()+-])|(?<! )(?=[,()+-])")).forEach(System.out::println);
输出:
.more
opr
(
&x
NE
&m
)
,
&n
+
1