给出以下字符串:
foo().bar(norf.qux).fubar()
我想用点分割它,除非它们在括号内,输出为:
foo()
bar(norf.qux)
fubar()
这可能吗?
答案 0 :(得分:1)
将输入字符串拆分为未括在括号内的点。
\.(?![^()]*\))
在Java中,表示此正则表达式的字符串将是
"\\.(?![^()]*\\))"
String[] tok = s.split("\\.(?![^()]*\\))");
System.out.println(Arrays.toString(tok));
<强>输出:强>
[foo(), bar(norf.qux), fubar()]
模式说明:
\. '.'
(?! look ahead to see if there is not:
[^()]* any character except: '(', ')' (0 or
more times)
\) ')'
) end of look-ahead
答案 1 :(得分:1)