2015-02-24 21 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