Betrachten Sie den folgenden Text:Warum macht meine Regex das?
foo:·····¶
·bar x··¶
·lorem ipsum····¶
dolorsitamet···¶
···¶
consectetur adipiscing elit:
Wo mittleren Punkte Räume zeigen und ¶
eine neue Zeile anzeigt.
Der Regex (?:foo:\s*)(.+)(?:\n\s*)
stimmt mit den drei Leerzeichen auf der Leerraumzeile überein, aber der Regex (?:foo:\s*)(.+)(?:\n\s+)
stimmt mit dem Zeilenumbruch und nicht mit dem Zeilenumbruch überein, der auf dolorsitamet
folgt. Warum verhält sich der * Charakter nicht gierig? Man würde erwarten, dass die dritte Gruppe (?:\n\s*)
¶
···¶`
Mein regex Modus ist mehrzeilige, dotall anzupassen.
Ja, ich bin Regex101 mit dem regex Handwerk. Was ich eigentlich will, ist, dass es alles zwischen 'foo: ···· ¶' und dem Leerzeichen nach' dolorsitamet ··· '(Ich kümmere mich nicht um nachgestellte Leerzeichen, aber keine Zeilenumbrüche), aber es sollte auch zurückgeben, was es derzeit für den Text hier tut https://regex101.com/r/jZ5hU0/1. Was wäre der richtige Weg, um es anzupassen? –
Nevermind, ich fand die Lösung '(?: Foo: \ s *) (. +?) ((?: $) | (?: \ N \ + \ n))' –
Ein bisschen vereinfacht: ' (?: foo: \ s *) (. +?) (\ n \ s + \ n | $) ' – anubhava