Wie erfolgt die Vergleichsoperatoren in Regex
-
23-09-2019 - |
Frage
Ich versuche, einen regulären Ausdruck, dass Streichhölzer Vergleiche wie diese zu erstellen:
= 445
> 5
>= 22
< 3
<= 42
<> 10
Ich dachte, dass dies funktionieren würde, aber es funktioniert nicht:
[=|>|<|>=|<|<=|<>]\s\d+
Es ist sehr wichtig, dass die '>' oder '<' precede '='. Diese Operatoren wäre nicht gültig:
=<
=>
>>
<<
==
Ich verwende dies einige dynamische SQL zu erstellen, so dass die Vergleichsoperatoren gültige SQL benötigen.
Irgendwelche Vorschläge?
Keine korrekte Lösung
Andere Tipps
(=|>|<|>=|<|<=|<>)\s\d+
oder so etwas wie: (Nicht wirklich tun, was Sie wollen, sie paßt zu allen 2character Kombinationen = <>, aber für Klarheit)
[=><]{1,2}\s\d+
-> wenn Sie die [] Klammern verwenden, bedeutet dies, dass eines der Zeichen im Inneren stattfinden soll (mehrere | definiert ist, kann zu undefinierten Verhalten führen, oder Verhalten, das ich bin mir nicht bewusst)
-> Sie wahrscheinlich zu verwenden einfache Klammern wollen (), wo die | hat die 'OR' Bedeutung.
Ich würde sagen, die Regex von Emfi gegeben ist gut genug. Mit einigen Modifikationen kann es Ausdrücke wie diese
nehmen"currentDate>=2012/11/07&¤tDate<=2012/11/08";
oder das
"currentDate==2012/11/07";
Mit diesem modifizierten regex
(<[=>]?|==|>=?|\&\&|\|\|)
Und geben Sie es als „gültig“. Wahrscheinlich ist sehr einfach, aber zumindest in meinem Fall genug
EDIT: Regex wurde modifiziert, um Vergleichsoperator zu übernehmen (<,>,> =, <=, ==) und Booleschen Operatoren (&&, ||) in ähnlicher Weise wie C-ähnliche Sprachen
Die Syntax […]
bezeichnet eine Zeichenklasse. Verwenden (…)
für die Gruppierung statt:
(=|>|<|>=|<|<=|<>)\s\d+
Und hier ist ein kompakter ein:
(=|[<>]=?|<>)\s\d+
Oder:
(=|<[>=]?|>=?)\s\d+
Dieser wird tun, was Sie suchen.
(<[=>]?|=|>=?)\s\d+
gelöst gerade dieses für mich. sie paßt <,>, <=,> =,! =, =, <> und nicht => oder =
([!<>])?([=>])?(?!<)
ich bin jetzt im hurra alte Post, aber, ich regex Hexe gemacht haben Groß- und Kleinschreibung und finden nur das, was wir brauchen, und ich hoffe, dass es Hilfe jemand.
Seine Werke für! =, <=,> =, ==, <,> und finden Sie es nur auf den Anfang der Zeichenfolge.
^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)?