Я хочу разбить строку на «&» только в тех случаях, когда «&» не находится между символами «<%» и «%>». Между этими символами у меня есть специальные выражения, которые я хочу игнорировать во время разделения. Текст считается особенным, только если он находится между двумя ближайшими "<%" текстом "%>".
Это работает так:
<%qwr<%qrw<%tret%>wet%>qwt => only this is scpecial <%tret%>
<%test142%>wqr%>%<%%>qwr%> => only this is <%test142%> and <%%> is special
Примеры:
1) my&string=21<%253&124%> <&> && => ['my', 'string=21<%253&124%> <', '> ', '', '']
2) new<%<&%235<%test&gg%>&test&f => ['new<%<', '%235<%test&gg%>', 'test', 'f']
3) a&<%&qwer&>ty%>&af => ['a', '<%&qwer&>ty%>', 'af']
Я пробовал '\&(?![^<%]*%>)'
и (?<!(<%))\&(?!(%>))
, но это работает неправильно.