Comment faire correspondre les opérateurs de comparaison dans Regex

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

  •  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&&currentDate<=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 vérifie pour cela dans mon code d'application.

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

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.

^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)?    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top