Sto cercando di utilizzare i lookbehind in un'espressione regolare e non sembra funzionare come mi aspettavo. Quindi, questo non è il mio vero utilizzo, ma per semplificare farò un esempio. Immagina di voler abbinare "esempio" a una stringa che dice "questo è un esempio". Così, secondo la mia comprensione di lookbehinds questo dovrebbe funzionare:L'espressione regolare Lookbehind non funziona con i quantificatori ('+' o '*')
(?<=this\sis\san\s*?)example
Cosa dovrebbe fare è trovare "Questa è una", quindi i caratteri di spazio e, infine, corrisponde alla parola "esempio". Ora, non funziona e non capisco perché, è impossibile usare '+' o '*' all'interno di lookbehinds?
Ho anche provato quei due e funzionano correttamente, ma che non soddisfano i miei bisogni:
(?<=this\sis\san\s)example
this\sis\san\s*?example
Sto usando questo sito per testare le mie espressioni regolari: http://gskinner.com/RegExr/
questo ha bisogno di un tag che identifica la lingua o l'ambiente dove li usi Le espressioni regolari di .NET gestiscono questo senza problemi. – Joey
Avviso! Se la tua espressione regolare funzionasse come vuoi, corrisponderà anche a 'example' di questo:' this is anexample'. Quindi, se non vuoi che tu debba rimuovere il '?' – noob
micha: Probabilmente dovrebbero semplicemente cambiare * in un '+'. Rimuovere il '' 'non ha alcun effetto a riguardo. Ma in realtà, '*?' Come quantificatore è inutile e non necessario in questo caso poiché non ci sono più spazi bianchi da abbinare dopo, quindi '\ s *?' È equivalente a '\ s *'. – Joey