2016-04-03 26 views
1

Ich habe einen Text so aussieht:Split Regex; halten Begrenzer

This is [!img|http://imageURL] text containing [!img|http://imageURL2] some images in it 

So jetzt habe ich diese Zeichenfolge in Teile geteilt werden soll und die Trennzeichen zu halten. ich bereits herausgefunden, dass dies funktioniert, um die Zeichenfolge zu spalten, aber es nicht hält die Trennzeichen:

\[!img\|.*\] 

Und in einigen anderen Beiträgen ich sehe, dass ich ?<= hinzufügen muß das Trennzeichen zu halten. So verbinden ich beide, aber ich bekomme die Fehlermeldung: Lookbehinds need to be zero-width, thus quantifiers are not allowed Hier ist die volle regex dieser Fehler zu werfen:

(?<=\[!img\|.*\]) 

ich als Ergebnis erwarten:

[This is; [!img|http://imageURL]; text containing; [!img|http://imageURL2]; some images in it] 

Also was ist der beste Weg, um es zu beheben ?

+0

Yop! Ich habe das schon versucht, aber es funktioniert nicht, sehe das Problem über – ForJ9

Antwort

2

Sie können eine Kombination von lookaround assertions verwenden:

String[] splitArray = subject.split("(?<=\\])|(?=\\[!img)"); 

Das eine Zeichenfolge teilt, wenn das vorhergehende Zeichen ein ] oder wenn die folgenden Zeichen [!img sind ist.

+0

Aber das wird das Trennzeichen entfernt ... – ForJ9

+0

Ja verwende ich split(), um es zu trennen :). Soll ich ein Muster verwenden? – ForJ9