2013-03-06 8 views

risposta

19

È necessario effettuare l'abbinamento pigro utilizzando ?.

Usa:

"-dhello;-egoodbye;-lcul8r" -replace "-d.*?;","-dbonjour;" 
+0

Esattamente quello che stavo cercando, grazie! – muhmud

4

Sempre essere esplicito. .* corrisponde tutto il possibile (compreso il punto e virgola e tutto ciò che segue), ma si desidera solo corrispondere fino alla prossima punto e virgola, quindi basta dire al motore regex che:

"-dhello;-egoodbye;-lcul8r" -replace "-d[^;]*;","-dbonjour;" 

[^;] corrisponde a qualsiasi carattere tranne punto e virgola.

+0

Anche se questo funziona in questo caso, era solo un esempio. Stavo davvero cercando un interruttore per spegnere l'avidità. Ma, grazie, è ancora un consiglio utile. – muhmud

+0

@muhmud: sicuro. Volevo solo esprimere che l'ungreedy non significa necessariamente "la partita più breve possibile". Lo ottieni solo quando specifichi esattamente quale potrebbe essere il contenuto della partita. Ad esempio, '<.*?>' corrisponderà a '' in '" bam> "'. –