2016-01-13 24 views
7

Mettere uno spazio all'interno di un quantificatore intervallo in una regex sembra sintatticamente valido:Che significato ha quando inserisco uno spazio all'interno di un quantificatore dell'intervallo in un'espressione regolare?

/.{1, 2}/ # => /.{1, 2}/ 

Tuttavia, tale spazio sembra alterare il comportamento rispetto a quando non v'è tale spazio:

"a" =~ /.{1,2}/ # => 0 
"a" =~ /.{1, 2}/ # => nil 

Cosa sarebbe essere il significato di una regex con spazio all'interno di un intervallo come /.{1, 2}/?

risposta

7
/.{1, 2}/ 

corrisponde a "a{1, 2}". Sebbene sia sintatticamente valido, lo {1, 2} smette di essere un quantificatore limitatore.

Una volta che uno space appare tra la virgola e il valore numerico max, {1, 2} si comporta come una corrispondenza di stringa literal.

+1

Per quanto ne so, in alcune vecchie versioni di un certo linguaggio è possibile utilizzare uno spazio all'interno del quantificatore limite ed è stato ignorato. Non riesco a ricordare quella lingua ora. C'era una domanda del genere prima, e alcuni commenti hanno menzionato questo fatto. –

+1

Questo spazio interno può essere ignorato se viene utilizzato un flag VERBOSE, BTW, ma il significato speciale verrà comunque perso. –

+0

@stribizhev vedo. È difficile. – sawa