2015-02-24 50 views
1

我需要我的文字分割成块,并保持分隔符,以及,我知道我可以使用下面的代码来做到这一点的解释Here分隔符:Java的拆分与动态值

Arrays.toString("a;b;c;d".split("((?<=;)|(?=;))")) 

但我“M卡住是,我的文本包含定界符与它里面的值,我的分隔符为@ [X] @ 其中X是其可以是任何数量的值。例如:@ [1] @,@ [44] @。我想实现的是得到一个数组如下:

text : "Hello my Name is [email protected][1]@How are you [email protected][2]@ByeBye" 

什么,我需要得到:

[ "Hello my Name is blabla.", "@[1]@", "How are you today?", "@[2]@", "ByeBye" ] 

我怎样才能做到这一点?提前致谢。

回答

2

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

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

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

如果可以存在多个数字,则可以指定一个可能的位数范围,例如\d{1,1000}而不是\d,最多可以有1000位数字。使用诸如\d+之类的表达式的未知数字位数不能用于Java lookbehind正则表达式。

+1

太棒了,非常感谢你。 – 2015-02-24 17:49:27

+1

@Pshemo谢谢你纠正我!我完全错过了。 – manouti 2015-02-24 18:05:15

+0

对不起再次碰到这个,但\ d +在我的情况下工作得非常好,例如“blablabla。@ [1] @ blablabla @ [27] @像一个魅力一样工作。 – 2015-03-18 10:56:41