Разделение строки в Java на «;», но не на «\\;» - PullRequest
3 голосов
/ 13 января 2011

В Java я пытаюсь использовать метод String.split(), разбивая строку на ";", но не на "\\\\;" (2 косых черты, за которыми следует точка с запятой)

Пример: "aa;bb;cc\\;dd;ee\\;;ff" следует разбить на;

aa

bb

cc\\;dd

ee\\;

ff

Как мне сделать это с помощью регулярного выражения?

Маркус

Ответы [ 3 ]

10 голосов
/ 13 января 2011

Использовать

"aa;bb;cc\\;dd;ee\\;;ff".split("(?<!\\\\);");

(?

5 голосов
/ 13 января 2011

Это называется отрицательным взглядом сзади, и синтаксис подобен (?<!a)b.Это соответствует любому b, которому не предшествует a.Вы хотели бы что-то вроде:

(?<!\\\\);
0 голосов
/ 10 августа 2013

Вот пример кода с.в качестве разделителя:

String p = "hello.regex\\.brain\\.twister";
System.out.println( p );
for (String s : p.split( "(?<!\\\\)\\.", -1 )) {
  System.out.println( "-> "+ s );
}

Будет ли Ouptut:

hello.regex\.brain\.twister
-> hello
-> regex\.brain.\twister
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...