【发布时间】:2017-07-24 14:29:13
【问题描述】:
我有一个类似这样的 java 字符串;
(fname:jon)(lname:doe)(guaranteer: Sam (W) Willis)(age:35)(addr:1 Turnpike Plaza)(favcolor:blue)
我想从分隔符(fname:jon)<here>(lname:doe) 中拆分此字符串。
我尝试通过正则表达式 \)\( 进行拆分,但它只是破坏了我的代码
arr = s.split("\\)\\(");
for (String a: arr) System.out.println(a);
输出
(fname:jon
lname:doe
guaranteer: Sam (W) Willis
age:35
addr:1 Turnpike Plaza
favcolor:blue)
我也看过这个问题:How to split a string, but also keep the delimiters?,但这并没有帮助,因为在我的情况下,我想保留分隔符 )( 并均匀拆分分隔符,即第一个括号应该放在第一位结果和第二到第二个结果。
我使用的正则表达式是s.split("(?<=\\)\\()"),它给出了输出:
(fname:jon)(
lname:doe)(
guaranteer: Sam (W) Willis)(
age:35)(
addr:1 Turnpike Plaza)(
favcolor:blue)
这是我想要的输出:
(fname:jon)
(lname:doe)
(guaranteer: Sam (W) Willis)
(age:35)
(addr:1 Turnpike Plaza)
(favcolor:blue)
【问题讨论】:
-
试试
(?<=\\))(?=\\() -
@Wiktor Stribiżew 我已经特别指出了为什么这个答案对我的情况没有帮助。你能告诉我为什么会重复吗?
-
概括所有这些情况的答案是stackoverflow.com/a/2848147/3832970。倒数第三个是你的情况。