Come abbinare operatori di confronto in Regex
-
23-09-2019 - |
Domanda
Sto cercando di creare un'espressione regolare che corrisponde paragoni in questo modo:
= 445
> 5
>= 22
< 3
<= 42
<> 10
Ho pensato che questo avrebbe funzionato, ma non è così:
[=|>|<|>=|<|<=|<>]\s\d+
E 'molto importante che il '>' o '<' precedere '='. Questi operatori non sarebbero valide:
=<
=>
>>
<<
==
Sto usando questo per creare un po 'di SQL dinamico in modo gli operatori di confronto devono SQL valido.
Qualche suggerimento?
Nessuna soluzione corretta
Altri suggerimenti
(=|>|<|>=|<|<=|<>)\s\d+
o qualcosa del genere: (In realtà non fare quello che vuoi, che corrisponde a tutte le combinazioni di 2character = <>, ma per chiarezza)
[=><]{1,2}\s\d+
-> quando si utilizzano le parentesi [], vuol dire, che uno dei personaggi all'interno dovrebbe avvenire (multipla | definita può portare a un comportamento indefinito, o il comportamento non sono a conoscenza di)
-> Probabilmente si voleva utilizzare le parentesi semplici (), dove il | ha significato la 'O'.
Direi che la regex data dal EMFI è abbastanza buono. Con alcune modifiche si può prendere espressioni come questo
"currentDate>=2012/11/07&¤tDate<=2012/11/08";
o del presente
"currentDate==2012/11/07";
Con questa regex modificato
(<[=>]?|==|>=?|\&\&|\|\|)
E dare come "valida". Probabilmente è molto semplice, ma almeno nel mio caso, abbastanza
EDIT: Regex è stato modificato al fine di tenere operatori di confronto (<,>,> =, <=, ==) e gli operatori booleani (&&, ||) in modo simile a C-come le lingue
La sintassi […]
denota una classe di caratteri. Utilizzare (…)
per raggruppare invece:
(=|>|<|>=|<|<=|<>)\s\d+
Ed ecco un più compatto una:
(=|[<>]=?|<>)\s\d+
o
(=|<[>=]?|>=?)\s\d+
Questo farà quello che stai cercando.
(<[=>]?|=|>=?)\s\d+
appena risolto questo per me stesso. corrisponde <,>, <=,> =,! =, =, <> e non => o =
([!<>])?([=>])?(?!<)
Ora sto im evviva vecchio post, ma, ho fatto regex strega è maiuscole e minuscole e solo constatare che quello che ci serve, e spero che sia aiutare qualcuno.
I suoi lavori per! =, <=,> =, ==, <,> e trovare solo su l'inizio della stringa.
^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)?