Comment faire correspondre les opérateurs de comparaison dans Regex
-
23-09-2019 - |
Question
Je suis en train de créer une expression régulière qui correspond à des comparaisons comme ceci:
= 445
> 5
>= 22
< 3
<= 42
<> 10
Je pensais que cela fonctionnerait, mais il ne possède pas:
[=|>|<|>=|<|<=|<>]\s\d+
Il est très important que le '>' ou '<' Précéder '='. Ces opérateurs ne seraient pas valides:
=<
=>
>>
<<
==
J'utilise cela pour créer une sql dynamique de sorte que les opérateurs de comparaison doivent sql valides.
Toutes les suggestions?
Pas de solution correcte
Autres conseils
(=|>|<|>=|<|<=|<>)\s\d+
ou quelque chose comme: (Ne pas vraiment faire ce que vous voulez, il correspond à toutes les combinaisons de 2 caractères de = <>, mais pour la clarté)
[=><]{1,2}\s\d+
-> lorsque vous utilisez les touches [] accolades, cela signifie que l'un des personnages à l'intérieur devrait avoir lieu (multiple | défini peut conduire à un comportement non défini, ou le comportement que je ne suis pas au courant)
-> vous vouliez probablement utiliser des accolades simples (), où le | a le sens 'OR'.
Je dirais que l'expression rationnelle donnée par EMFI est assez bon. Avec quelques modifications, il peut prendre des expressions comme celle-ci
"currentDate>=2012/11/07&¤tDate<=2012/11/08";
ou ce
"currentDate==2012/11/07";
Avec cette regex modifiée
(<[=>]?|==|>=?|\&\&|\|\|)
Et donner comme « valide ». Probablement est très simple, mais au moins dans mon cas, assez
EDIT: Regex a été modifié afin de prendre les opérateurs de comparaison (<,>,> =, <=, ==) et les opérateurs booléens (&&, ||) d'une manière similaire à langages de type C
La […]
de syntaxe désigne une classe de caractères. Utilisez (…)
pour grouper la place:
(=|>|<|>=|<|<=|<>)\s\d+
Et voici un plus compact un:
(=|[<>]=?|<>)\s\d+
Ou:
(=|<[>=]?|>=?)\s\d+
Celui-ci fera ce que vous cherchez.
(<[=>]?|=|>=?)\s\d+
juste résolu cela pour moi-même. elle correspond à <,>, <=,> =,! =, =, <> et non => ou =
([!<>])?([=>])?(?!<)
Je suis maintenant im hourra ancien poste mais, je l'ai fait sorcière regex est sensible à la casse et trouve seulement que ce que nous avons besoin, et j'espère que ce sera aider quelqu'un.
Ses œuvres pour! =, <=,> =, ==, <,> et trouver seulement sur le début de la chaîne.
^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)?