Negar secuencias de final de línea específicas en expresiones regulares rlike

StackOverflow https://stackoverflow.com/questions/334907

  •  22-07-2019
  •  | 
  •  

Pregunta

Quiero hacer coincidir cualquier línea que no termine con 'CA' o 'CA [cualquier número]'. ¿Cómo puedo hacer eso usando rlike en MySQL? (Tenga en cuenta que no es compatible?! Etc.).

Aquí está la expresión regular para una coincidencia positiva, solo necesito una forma de negarla: '^.*[Cfont>[Afont>[0-9font>?$'

(Debido a una vergonzosa limitación de arquitectura, no quiero usar no rlike ... )

¿Fue útil?

Solución

El truco es convertirlo en una descripción de lo que haces quieres que coincida. Algo no termina en CA o CA (dígito) cuando:

Termina con algo diferente a A o dígito, o

Termina con algo diferente a A, luego un dígito, o

Termina con algo más que C, luego A, luego un dígito o

Termina con algo diferente a C, luego A o

Es igual a A seguido de un dígito, o

Es igual a A o un dígito, o

Está vacío.

Entonces:

rlike '[^A0-9]$|[^A][0-9]$|[^C]A[0-9]$|[^C]A$|^A[0-9]$|^[A0-9]$|^

No probado, no optimizado, probablemente al menos un error en alguna parte de lo anterior.

No probado, no optimizado, probablemente al menos un error en alguna parte de lo anterior.

Otros consejos

  

Bueno, la expresión regular proviene de una columna   en una mesa, y la mayoría de los patrones   Ya hay trabajo. Entonces sería   más fácil si pudiera hacer este patrón   trabajar dentro de la estructura existente.

Hice algo similar una vez, lo que hice fue crear otra columna (creo que usé un campo de bits) que contenía opciones para la expresión regular (insensibilidad a mayúsculas, anclaje, negación, etc.). Un enfoque similar podría funcionar para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top