2015-11-18 50 views
1

我想解析"xx;yy;zz%;tt"形式的字符串到組中,其中;是分隔字符,而%是轉義字符。所以在這個例子中它變成了一個包含[xx,yy, zz;tt]的3個元素的列表。Groovy字符串解析到組

我知道split方法,但它不需要轉義字符,而且好像需要大量的行和臨時變量來實現想要的結果。有一個簡短的方法來做到這一點,關閉?

回答

3

使用正則表達式與負回顧後,以匹配不百分號前面所有分號:

static void main(String[] args) { 
    String test = "xx;yy;zz%;tt" 
    def arr = test.split(/(?<!%)\;/) 
    println(arr) 
} 

打印:

[xx, yy, zz%;tt]

你必須使用的回顧後,爲了防止在分號之前的字符不被正則表達式捕獲。