Captura, si está entre la subcadena ""

(?!([^"]*"[^"]*")*[^"]*$),

Esto captura, si está entre "". Digamos que la cadena de prueba es

 1 2 3 4 , 5 6 7, 8 9 "10 11 12 , 13 14 15," 16,17,"18,19,"20 21,22

capturado será entre 12 y 13 y descansar como

  http://regex101.com/r/rX0dM7/1

Ahora si cambio lo mismo a

(?!(.*?".*?")*[^"]*?$),

Esto captura solo el final, entre 18 y 19 años. Algo así

  http://regex101.com/r/hL7uS1/1

Ahora la pregunta es por qué es [^ "] tan diferente de. *?" .

En segundo lugar, ¿cuál es el significado de [^ "] * $ como si lo elimino, no se captura nada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta