Heim >Backend-Entwicklung >Golang >Wie kann man Lookarounds in Go Regex umgehen?
Beim Versuch, einen regulären Ausdruck in Go zu verwenden, tritt ein Fehler auf:
error parsing regexp: invalid or unsupported Perl syntax: (?!
Dieser Fehler tritt insbesondere bei Folgendem auf Regex:
regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$")
Das Problem entsteht, weil Go-Regex keine Lookarounds unterstützt, im Gegensatz zu Perl sind Lookarounds Behauptungen, die den umgebenden Text überprüfen, ohne ihn zu verbrauchen.
Um diese Einschränkung zu umgehen, verwenden Sie einen anderen Ansatz:
Kompilieren Sie zunächst zwei separate reguläre Ausdrücke:
first := regexp.MustCompile(`^On\s(.+?)wrote:$`) second := regexp.MustCompile(`^On.*On\s.+?wrote:`)
Führen Sie dann die folgenden Schritte aus:
Alternativ können Sie eine optionale Erfassungsgruppe verwenden, um den Vorgang zu vereinfachen:
regex := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)
Überprüfen Sie, ob eine Übereinstimmung vorliegt und geben Sie true zurück, wenn:
Andernfalls wird false zurückgegeben.
Das obige ist der detaillierte Inhalt vonWie kann man Lookarounds in Go Regex umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!