2013-07-05 18 views

risposta

3

Non è necessario per sfuggire uno qualsiasi di questi personaggi in classe di caratteri. Oltre a questo, è necessario utilizzare quantificatori, per abbinare più di 1 ripetizione di quei personaggi.

avete bisogno di questo:

[<>=]{1,2} 

Nota quantificatore, per abbinare 2 ripetizioni, come richiesto per <= e >=.


Si noti inoltre che questo sarà anche corrispondere - ==, <<. Se si desidera far corrispondere rigorosamente solo quei 4 corde, è possibile utilizzare questa espressione regolare:

[<>]=?|= 

Utilizzando ? dopo = rende opzionale. Quindi, la prima parte corrisponderà - <, >, <= e >=. E poi aggiungiamo = usando la pipe.

+1

Questo corrisponderà anche a '==', '<<', '= <', ecc. – Barmar

+0

@Barmar. Si, certo.Ma che non ho preso così rigorosamente. Forse aggiornerò la risposta. –

+0

Grazie, ma questo funziona bene, tranne che non funziona solo per < or > ma funziona per <= or > = o = – saroll

2

Non sono sicuro del motivo per cui si utilizzano le barre (potrebbe avere qualcosa con coldfusion di cui non sono a conoscenza, aggiungerle se necessario) ... L'espressione regolare corrisponde attualmente a un solo carattere. Prova:

[<=>]{1,2} 

Se si desidera uno regex per abbinare solo >, <, >=, <= e =, ci sarà un po 'di più per questo. La funzione REMatch() in coldfusion restituirà tutti i risultati corrispondenti in un array, quindi è importante specificare delimitatori o limiti in un modo o nell'altro, perché è come un in python o preg_match_all in PHP (o contrassegnare la corrispondenza globale) .

Il confine credo sia il più semplice è il \b:

\b(?:[<>]=?|=)\b 

Here's a demo with g activated.

E senza questi limiti, here's what happens.

MODIFICA: Non si è reso conto degli spazi. Potrebbe forse essere risolto con questo?

\b\s*(?:[<>]=?|=)\s*\b 
+0

Grazie, questo funziona solo per = o <= or > = ma non funziona solo per> o saroll

+0

@saroll Ne sei sicuro? Dovrebbe corrispondere se combina con successo '> =' o '<=' o '=' a causa di '{1,2}'. – Jerry

+0

grazie a @RohitJain questo funziona perfettamente [\ <=>] {1,2} aggiungendo i caratteri di escape – saroll

10

Prova questo:

[<>]=?|= 

corrisponda < o > eventualmente seguita da =, o semplicemente = da solo.

+0

+1 per bello e compatto. :) – zx81