Может быть полезно добавить +
после [^;]
, чтобы у вас было меньше повторений.
Не существует ли какой-либо конструкции, которая говорит: «Если регулярное выражение соответствует этой точке, не возвращаться»? Может быть, это тоже пригодится. (Обновление: оно называется притяжательные квантификаторы ).
Совершенно другой альтернативой является написание вспомогательного метода с именем splitQuoted(char quote, char separator, CharSequence s)
, который явно перебирает строку и запоминает, видел ли он нечетное количество кавычек. В этом методе вы также можете обрабатывать случай, когда символ кавычки может потребоваться экранировать, когда он появляется в строке в кавычках.
'I'm what I am', said the fox; and he disappeared.
'I\'m what I am', said the fox; and he disappeared.
'I''m what I am', said the fox; and he disappeared.