2016-08-13 3 views
2

Wenn ich versuche, diese Regex in golang ich regex Parsing-Fehler bekommenFehler Parsen regexp: ungültige oder nicht unterstützte Perl-Syntax: `(`

Fehler Parsen regexp:?!. Ungültige oder nicht unterstützte Perl-Syntax: (?!

regexp.MustCompile("^(?!On.*On\\s.+?wrote:)(On\\s(.+?)wrote:)$"), 

Kann mir jemand sagen, warum seine nicht funktioniert und mir helfen, dieses Problem zu beheben?

Dank

+0

Das Paket go regexp verwendet RE2 Syntax, nicht PCRE https://github.com/google/re2/wiki/Syntax – JimB

+0

'(?! Re) \t bevor Text nicht passend re (nicht unterstützt)' von der Seite [ hier] (https://github.com/google/re2/wiki/Syntax) – SomeDude

+0

@svasa Irgendwelche alternativen Möglichkeiten, damit es funktioniert? – user1091558

Antwort

1

Go Regex unterstützt keine Lookarounds.

Als Abhilfe können Sie

regexp.MustCompile("^On\\s(.+?)wrote:$") 

und

regexp.MustCompile("^On.*On\\s.+?wrote:") 

und überprüfen, ob die erste entspricht die Zeichenfolge und die zweiten nicht verwenden. wenn ja, Rückkehr falsch, sonst -

Sie könnten auch eine optionale Erfassungsgruppe (.*On)?

regexp.MustCompile("^On(.*On)?\\s.+?wrote:") 

und prüfen, ob es eine Übereinstimmung gibt und zurück wahr, wenn die Gruppe 1 endet mit On hinzufügen wahr.

Verwandte Themen