鉴于我的英语最近变得非常生疏,我会简短地说。 我想要做的是将字符串拆分为一组子字符串,使分隔符保持为相应子字符串的一部分。当然,如果事实并非如此,那么分隔符可能会有所不同。说我有一个类似于:
的字符串[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} =))
但效果与第二种情况相同。
答案 0 :(得分:0)
您是否尝试使用lookbehind断言进行拆分?:
(?<== [0-9]{1,1000} =)
或使用find with:
\\[.*?(?:= [0-9]+ =|$)