Вы можете использовать группу захвата и отрицательный класс символов , не соответствующий ни одному из перечисленных символов:
"[^";]+(;)[^;"]+"
Regex demo
Или используйте \K
, чтобы забыть о том, что было написано, и положительный взгляд:
"[^;"]+\K;(?=[^;"]+")
Regex demo
Чтобы сопоставить несколько точек с запятой между двойными кавычками, вы можете использовать \G
Объяснение
(?:"|\G(?!^))[^";]+\K;(?=[^"]+")
(?:
Группа без захвата
"
Совпадение "
|
или
\G(?!^)
Утверждение позиции в конце предыдущего матча, а не в начале
)
Закрыть группу без захвата
[^";]+
Совпадение 1+ раз, а не "
или '
\K;
Забудьте, что было найдено, и сопоставьте ;
(?=[^"]+")
Позитивный взгляд, утверждают, что то, что справа, в 1+ раз не "
, а затем соответствует "
Regex demo
Примечание: если вы не хотите сопоставлять символы новой строки, вы можете добавить это в класс символов [^;"\r\n]