Mi expresión regular coincide demasiado. ¿Cómo puedo decir que coincida con el patrón más pequeño posible?

Tengo este RegEx:

('.+') 

Tiene que coincidir con los literales de caracteres como en C. Por ejemplo, si tengo 'a' b 'a' , debe coincidir con los a y los ‘s que los rodean.

Sin embargo, también coincide con el b también (no debería), probablemente porque es, estrictamente hablando, también entre ' ‘ s.

Aquí hay una captura de pantalla de cómo sale mal (yo uso esto para resaltar la syntax):
captura de pantalla

Soy bastante nuevo en expresiones regulares. ¿Cómo puedo decirle a la expresión regular que no coincida con esto?

Es ser codicioso y coincidir con el primer apóstrofo y el último y todo lo demás.

Esto debería coincidir con cualquier cosa que no sea un apóstrofo.

 ('[^']+') 

Otra alternativa es intentar partidos no codiciosos.

 ('.+?') 

¿Has probado una versión no codiciosa, por ejemplo ('.+?') ?

Generalmente hay dos modos de emparejamiento (o dos conjuntos de cuantificadores), máximo (codicioso) y mínimo (no codicioso). El primero dará como resultado el emparejamiento más largo posible, el último en el más corto. Puede leer sobre esto (aunque en contexto perl) en el Libro de Cocina de Perl (Sección 6.15).

Tratar:

 ('[^']+') 

Los ^ medios incluyen todos los caracteres excepto los que están entre corchetes. De esta forma, no coincidirá con 'a' b 'a' porque hay un ' intermedio’, por lo que en lugar de eso dará dos instancias de 'a'

Debes escapar de los qutoes:

 \'[^\']+\' 

Editar: Hmm, supongo que esta respuesta depende de qué idioma / sistema estés usando.