2015-11-18 3 views
1

Я хотел бы разобрать строку формы "xx;yy;zz%;tt" в группы, где ; - символ разделителя, а % - символ escape. Так что в этом примере он становится списком из 3 элементов с [xx,yy, zz;tt].Анализ строк строки в группах

Я знаю метод разделения, но он не принимает escape-символ, и мне кажется, что мне нужно много строк и временных переменных для достижения желаемого результата. Есть ли короткий способ сделать это, с закрытием?

ответ

3

Использование регулярных выражений с отрицательным просмотром назад, чтобы соответствовать всем запятой не предшествует знак процента:

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

печатает:

[xx, yy, zz%;tt]

Вы должны использовать 'назад, чтобы предотвратить символы, которые предшествуют точке с запятой, захватываются регулярным выражением.

Смежные вопросы