我需要将文本拆分成碎片并同时保留分隔符,我知道我可以使用下面的代码来解释Here:
Arrays.toString("a;b;c;d".split("((?<=;)|(?=;))"))
但我遇到的问题是我的文字中包含一个带有值的分隔符,我的分隔符是 @ [x] @ 其中 x 是一个可以任意数字的值。例如:@ [1] @,@ [44] @。我想要实现的是获得如下数组:
text : "Hello my Name is blabla.@[1]@How are you today?@[2]@ByeBye"
以及我需要得到的东西:
[ "Hello my Name is blabla.", "@[1]@", "How are you today?", "@[2]@", "ByeBye" ]
我怎样才能实现这一目标?提前谢谢。
答案 0 :(得分:2)
尝试使用以下正则表达式作为分隔符:
((?<=(@\\[\\d\\]@))|(?=(@\\[\\d\\]@)))
基本上用(@\\[\\d\\]@)
替换分号,其中\d
匹配任何数字。
如果可以存在多个数字,您可以指定可能的位数范围,例如\d{1,1000}
而不是\d
,最多可包含1000位数。使用像\d+
这样的表达式的未知位数不能与Java lookbehind正则表达式一起使用。