【发布时间】:2014-11-26 19:23:55
【问题描述】:
鉴于我的英语最近真的很生疏,我会简短地说。 我想要做的是将一个字符串拆分为一组子字符串,将分隔符作为各个子字符串的一部分。当然,如果不是因为分隔符可能会有所不同,这也不是什么难事。假设我有一个类似于:
[ffd][ulg][zff] = 1 = ... = 2 = ... [bdt] = 3 = ... [abc][dfg][urc][ttr] = 4 = .. .
我想将其拆分为以下子字符串:
[ffd][ulg][zff] = 1 = ...
= 2 = ...
[bdt] = 3 = ...
[abc][dfg][urc][ttr] = 4 = ...
请注意,“= number =”序列必须始终存在(并且是基本分隔符),但它可能(或可能不)前面有不同数量的 \[\w{3}\] 组.
到目前为止,我已经玩弄了以下表达式:
?=((\[\w{3}\])+\s= \d\{3} =)
或
?=((\[\w{3}\])*\s= \d\{3} =)
第一个返回:[ffd], [uld], [zff] = 1 = ..., [bdt] = 3 =, [abc], [dfg], [urc], [ttr] = 4 = 。 ..作为单独的字符串。不出所料,它在将 [\w{3}] 簇视为一个簇并将“= 2 = ...”解释为“[zff] = 1 = ...”子字符串的一部分时存在问题。另一个简单地将每个 [\w{3}] 和每个“= number = ...”序列解释为单独的字符串。此外,我尝试将 OR 子句嵌入为 split 方法的参数,即:
(?=((\[\w{3}\])+\s= \d\{3} =|= \d\{3} =))
但效果和第二种情况一样。
【问题讨论】:
-
好的,你试过什么?到目前为止,您的代码/正则表达式有什么问题?
-
...是实际内容还是更多[asd][cxg]的占位符? -
@zapl 省略号代表任何给定的文本内容
标签: java regex split lookahead