ваше регулярное выражение должно соответствовать полностью пустой строке, но не, например, строка, состоящая из одного пробела, потому что ваше регулярное выражение утверждает, что если строка не является полностью пустой , она должна содержать хотя бы одну двойную кавычку. Это связано с тем, что в регулярном выражении есть токены ["], за которыми не следует *.
Правильный способ думать о необходимом регулярном выражении заключается в следующем: вы хотите сопоставить (строка без двойных кавычек), затем (двойные кавычки) плюс (строка без двойных кавычек), за которыми следует (двойная) кавычка, а затем (строка без двойных кавычек), а затем повторите, начиная с первого «с последующим» до бесконечности. Строка без двойных кавычек - [^ "] *, поэтому вы получите (пробел добавлен для удобства чтения):
[^"]* (" [^"]* " [^"]*)*
Если вы сравните это с вашим регулярным выражением, первое [^ "] * было перемещено из повторения.