У меня есть строка, которую нужно разделить на основе разделителя (:).Этот разделитель может быть экранирован символом (например, «?»).В основном разделителю может предшествовать любое количество escape-символов.Ниже приведен пример строки:
a:b?:c??:d???????:e
Здесь, после разделения, он должен дать следующий список строк:
a
b?:c??
d???????:e
В основном, если разделителю (:) предшествует четноеколичество escape-символов, оно должно быть разделено.Если ему предшествует нечетное количество escape-символов, он не должен разделяться.Есть ли решение этого с помощью регулярных выражений?Любая помощь будет принята с благодарностью.
Подобный вопрос был задан ранее здесь , но ответы не работают для этого варианта использования.
Обновление: решение с регулярным выражением: (?: \?. | [^ :?]) * правильно разделить строку.Тем не менее, это также дает несколько пустых строк.Если вместо * задано +, даже реальные пустые совпадения также игнорируются.(Например: - a :: b дает только a, b)