Condividi tramite


Quantificatori e corrispondenze vuote

I quantificatori *, +, {n,m} e le controparti "lente" non si ripetono mai dopo una corrispondenza vuota quando è stata trovata la corrispondenza per il numero minimo n. Questa regola impedisce che di fronte a una corrispondenza vuota i quantificatori entrino in un ciclo infinito quando m è infinito (la regola ha valore anche se m non è infinito).

Ad esempio (a?)* corrisponde alla stringa "aaa" e cattura sottostringhe nel criterio (a)(a)(a)(). Si noti che non è presente una quinta cattura vuota, poiché la quarta cattura vuota causa l'interruzione della ripetizione del quantificatore.

Allo stesso modo, (a\1|(?(1)\1)){0,2} corrisponde alla stringa vuota e non ad "a", poiché non esegue mai il tentativo di espansione ()(a). Nel quantificatore {0,2} sono consentite solo corrispondenze vuote nell'ultima iterazione. Al contrario, (a\1|(?(1)\1)){2} corrisponde ad "a", perché esegue il tentativo su ()(a). Il numero minimo di iterazioni, ovvero 2, impone la ripetizione del modulo di gestione dopo una corrispondenza vuota.

Vedere anche

Altre risorse

Espressioni regolari di .NET Framework