Cómo combinar los operadores de comparación de expresiones regulares

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

  •  23-09-2019
  •  | 
  •  

Pregunta

Estoy intentando crear una expresión regular que coincide con comparaciones como esta:

= 445
> 5
>= 22
< 3
<= 42
<> 10

pensé que esto iba a funcionar, pero no:

[=|>|<|>=|<|<=|<>]\s\d+

Es muy importante que el '>' o '<' precedente '='. Estos operadores no serían válidos:

=<
=>
>>
<<
==

Estoy usando esto para crear un poco de SQL dinámico por lo que los operadores de comparación tienen que SQL válida.

¿Alguna sugerencia?

No hay solución correcta

Otros consejos

(=|>|<|>=|<|<=|<>)\s\d+

o algo así: (En realidad no se haga lo que quiera, que coincide con todas las combinaciones de 2character = <>, pero por claridad)

[=><]{1,2}\s\d+

-> al utilizar las abrazaderas [], es decir, que uno de los caracteres en el interior debe tener lugar (múltiple | definida puede conducir a un comportamiento indefinido, o comportamiento no soy consciente de)

-> probablemente quería apoyos simples (uso), donde el | tiene el significado 'OR'.

Yo diría que la expresión regular dada por EMFI es lo suficientemente bueno. Con algunas modificaciones puede tomar expresiones como esto

"currentDate>=2012/11/07&&currentDate<=2012/11/08";

o este

"currentDate==2012/11/07";

Con esta expresión regular

modificado
(<[=>]?|==|>=?|\&\&|\|\|)

Y darlo como "válida". Probablemente es muy simple, pero al menos en mi caso, lo suficientemente

EDIT: Regex se modificó a fin de tener operadores de comparación (<,>,> =, <=, ==) y los operadores booleanos (&&, ||) de una manera similar a la C-como idiomas

La sintaxis […] denota una clase de caracteres. Uso (…) para agrupar en su lugar:

(=|>|<|>=|<|<=|<>)\s\d+

Y aquí está una más compacta:

(=|[<>]=?|<>)\s\d+

O:

(=|<[>=]?|>=?)\s\d+

Esto va a hacer lo que usted está buscando.

(<[=>]?|=|>=?)\s\d+

acabamos de resolver esto por mí mismo. que coincide con <,>, <=,> =,! =, =, <>, y no => o = >. Estoy comprobando para que en mi código de la aplicación.

([!<>])?([=>])?(?!<)

Ahora estoy im antiguo puesto hurra, pero, he hecho bruja expresiones regulares entre mayúsculas y minúsculas y sólo encuentro que lo que necesitamos, y espero que sea la ayuda de alguien.

Sus obras para! =, <=,> =, ==, <,> y encontrar sólo en el comienzo de la cadena.

^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)?    
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top