Cómo combinar los operadores de comparación de expresiones regulares
-
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&¤tDate<=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 =
([!<>])?([=>])?(?!<)
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.
^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)?