Heim > Backend-Entwicklung > Golang > Wie kann man Lookarounds in regulären Go-Ausdrücken umgehen?

Wie kann man Lookarounds in regulären Go-Ausdrücken umgehen?

Patricia Arquette
Freigeben: 2024-11-24 11:30:16
Original
962 Leute haben es durchsucht

How to Work Around Lookarounds in Go Regular Expressions?

Fehler beim Parsen von Regex: Ungültige Perl-Syntax – Das Problem verstehen und eine Problemumgehung finden

Beim Versuch, den regulären Ausdruck „^(? !On.*On\s. ?wrote:)(On\s(. ?)wrote:)$" in Go, ein gemeinsames Der aufgetretene Fehler ist:

error parsing regexp: invalid or unsupported Perl syntax: (?!
Nach dem Login kopieren

Dieser Fehler ist auf die Tatsache zurückzuführen, dass Go keine Lookarounds unterstützt, eine Syntaxfunktion, die in regulären Perl-Ausdrücken verfügbar ist und negative Lookaheads wie (?!.

ermöglicht Lookaround-Syntax verstehen

In regulären Ausdrücken ist ein Lookaround ein Metazeichen, das a bestätigt Bedingung, ohne Zeichen aus der Eingabezeichenfolge zu verbrauchen. Ein negativer Lookahead, gekennzeichnet durch (?!, stellt fest, dass der folgende Ausdruck an der aktuellen Position nicht übereinstimmen sollte.

Go Regex Workaround

Da Go keine Lookarounds unterstützt, kann der obige reguläre Ausdruck nicht direkt verwendet werden. Stattdessen gibt es einen Workaround mit mehreren regulären Ausdrücken und bedingten Prüfungen erforderlich:

r1 := regexp.MustCompile(`^On\s(.+?)wrote:$`)
r2 := regexp.MustCompile(`^On.*On\s.+?wrote:`)
match1 := r1.MatchString(inputString)
match2 := r2.MatchString(inputString)
if match1 && !match2 {
    // The string does not contain "On ... On" but contains "On ..."
   // Handle match
}
Nach dem Login kopieren

Alternativ können Sie eine optionale Erfassungsgruppe verwenden und nach einem erfolgreichen Match den Inhalt der Gruppe überprüfen:

r := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)
match := r.FindStringSubmatch(inputString)
if match != nil {
   // Handle match
   if match[1] != "" {
      // Group 1 ends with "On"
   }
}
Nach dem Login kopieren

Zusätzliche Hinweise

  • Verwenden Sie die Funktion regexp.MustCompile, um die regulären Ausdrucksmuster zu kompilieren, da sie bei Ungültigkeit in Panik gerät Ausdrücke, was die Fehlerbehandlung vereinfacht.
  • Die bereitgestellten Problemumgehungen basieren auf der Annahme, dass die Eingabezeichenfolge dem angegebenen Format folgt. Passen Sie die regulären Ausdrücke entsprechend an, wenn das Format variiert.

Das obige ist der detaillierte Inhalt vonWie kann man Lookarounds in regulären Go-Ausdrücken umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage