Come ottenere il look per essere avido?
In questo caso voglio che il lookbehind consumi: se è presente..NET Regex Lookbehind Not Greedy
m = Regex.Match("From: John", @"(?i)(?<=from:)....");
// returns ' Jon' what I expect not a problem just an example
m = Regex.Match("From: John", @"(?i)(?<=from:?)....");
// returns ': Jo'
// I want it to return ' Jon'
Ho trovato un lavoro intorno
@"(?i)(?<=\bsubject:?\s+).*?(?=\s*\r?$)"
Finché si mette un po 'affermativa dopo il? poi toglie l'avidità opzionale fuori dal gioco. Per la stessa ragione ho dovuto mettere $ in avanti.
Ma se hai bisogno di finire con un avido opzionale, allora devi andare con la risposta accettata qui sotto.
Piccolo prolisso ma funziona e funziona per me. Grazie. Lo considero un bug che il lookbehind non è avido. – Paparazzi
@Blam: Ho appena realizzato che questo può essere semplificato per essere meno dettagliato. Ho aggiornato il mio post. – porges
No, non riesce il compilatore, correggi o ritorna alla risposta originale rSubject = new Regex (@ "(? I) (? <= Subject (: | (?!:))) ........)"); – Paparazzi