Wyrażenie regularne rozbijające stringa

0

Hej,
potrzebuje pomocy w napisaniu wyrażenia regularnego rozbijającego stringa (funkcją split). Ma to działać tak, że jeśli mamy string:
a|b|c|d
to dzieli na a, b, c, d. Ale jeżeli | jest poprzedzony , czyli:
a|b|c|d to ma podzielić tak:
a, b|c, d.
Pomoże ktoś?

3

Wcale nie chcesz tego zrobić... Pattern którego szukasz to:
"(?<!\\\\)\\|"
Korzysta z takiego cudu jak negative lookbehind, czyli zerkamy o jedną pozycję wstecz od znalezionego | i sprawdzamy czy aby czasem nie jest to \

String pattern = "(?<!\\\\)\\|";
String test1 = "a|b|c";
String test2 = "a|b\\|c|d";
System.out.println(Arrays.stream(test1.split(pattern)).collect(Collectors.joining(",")));
System.out.println(Arrays.stream(test2.split(pattern)).collect(Collectors.joining(",")));
a,b,c
a,b\|c,d
0

dam złośliwy test case:
aa|bb\\|c\|c

1 użytkowników online, w tym zalogowanych: 0, gości: 1