Beim Versuch, einen regulären Ausdruck in Go zu kompilieren, stoßen Benutzer möglicherweise auf den folgenden Parsing-Fehler:
error parsing regexp: invalid or unsupported Perl syntax: (?!
Dieser Fehler wird normalerweise ausgelöst, wenn versucht wird, einen Lookaround-Operator (?!...) zu verwenden, der in der regulären Ausdruckssyntax von Go nicht unterstützt wird.
Lookarounds sind eine spezielle Art von regulären Ausdrucksoperatoren, die nur dann zum Abgleichen eines Musters verwendet werden, wenn diesem nicht unmittelbar ein anderes spezifisches Muster folgt oder vorangestellt ist. In diesem Fall wird (?! verwendet, um zu überprüfen, ob eine bestimmte Zeichenfolge nicht mit dem Text beginnt „Ein“.
Da Go Lookarounds nicht unterstützt, stehen mehrere Workarounds zur Verfügung:
Separate Regexps verwenden
Ein Ansatz besteht darin, zwei separate reguläre Ausdrücke zu verwenden:
nonOnRegex := regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$") onOnRegex := regexp.MustCompile("^On.*On\s.+?wrote:")
Sie können dann überprüfen, ob nonOnRegex mit der Zeichenfolge übereinstimmt und onOnRegex nicht übereinstimmt, um das gewünschte Ergebnis zu ermitteln.
Optionale Erfassungsgruppen verwenden
Eine weitere Problemumgehung besteht darin, eine optionale Erfassungsgruppe zu verwenden:
regex := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)
Nachdem Sie die Zeichenfolge mit diesem regulären Ausdruck abgeglichen haben, können Sie überprüfen, ob die erste Die Erfassungsgruppe existiert und endet mit „Ein“. Wenn ja, geben Sie „false“ zurück, andernfalls „true“.
Durch die Implementierung einer dieser Problemumgehungen können Sie die Funktionalität von Lookarounds in der regulären Ausdruckssyntax von Go effektiv replizieren.
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!