Java Split with delimiter with dynamic value

时间:2015-02-24 17:35:02

标签: java android regex split

我需要将文本拆分成碎片并同时保留分隔符,我知道我可以使用下面的代码来解释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" ]

我怎样才能实现这一目标?提前谢谢。

1 个答案:

答案 0 :(得分:2)

尝试使用以下正则表达式作为分隔符:

((?<=(@\\[\\d\\]@))|(?=(@\\[\\d\\]@)))

基本上用(@\\[\\d\\]@)替换分号,其中\d匹配任何数字。

如果可以存在多个数字,您可以指定可能的位数范围,例如\d{1,1000}而不是\d,最多可包含1000位数。使用像\d+这样的表达式的未知位数不能与Java lookbehind正则表达式一起使用。