2016-04-03 3 views
1

У меня есть текст выглядит следующим образом:Сплит регулярное выражение; держать разделитель

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

Так что теперь я хочу, чтобы разделить эту строку в части и сохранить разделители. я уже выяснил, что это работает, чтобы разделить строку, но не держать разделители:

\[!img\|.*\] 

А в некоторых других постах я вижу, что мне нужно добавить ?<= сохранить разделитель. Так я соединил оба, но я получаю сообщение об ошибке: Lookbehinds need to be zero-width, thus quantifiers are not allowed Вот полное регулярное выражение бросает эту ошибку:

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

Я ожидаю, что в результате:

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

Так Что лучший способ это исправить ?

+0

Yop! Я пробовал это уже, но он не будет работать над проблемой выше – ForJ9

ответ

2

Вы можете использовать комбинацию lookaround assertions:

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

Это расщепляет строку, если предыдущий символ является ] или, если выполняются следующие символы [!img.

+0

Но это удалит разделитель ... – ForJ9

+0

Да, я использую split(), чтобы разбить его :). Должен ли я использовать шаблон? – ForJ9

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