Wie man den Lookbehind dazu bringt, gierig zu sein?
In diesem Fall möchte ich das Lookbehind verbrauchen: Wenn vorhanden ist..NET Regex Lookbehind Nicht Gierig
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'
fand ich eine Arbeit um
@"(?i)(?<=\bsubject:?\s+).*?(?=\s*\r?$)"
Solange Sie nach dem etwas bejahend setzen? dann nimmt es das optionale Greedy aus dem Spiel. Aus dem gleichen Grund musste ich den $ in den Blick nach vorne bringen.
Aber wenn Sie auf einem optionalen gierig enden müssen, dann müssen Sie mit der akzeptierten Antwort unten gehen.
Wenig wortreich, aber es funktioniert und das funktioniert für mich. Vielen Dank. Ich halte es für einen Fehler, dass der Lookbehind nicht gierig ist. – Paparazzi
@Blam: Nur realisiert, dass dies vereinfacht werden kann, um weniger wortreich zu sein. Ich habe meinen Beitrag aktualisiert. – porges
Nein, dass der Compiler nicht funktioniert, bitte korrigieren oder zurück zur ursprünglichen Antwort rSubject = new Regex (@ "(? I) (? <= Betreff (: | (?!:))) ........)"); – Paparazzi