首頁 >後端開發 >Golang >為什麼我的 Go 正規表示式程式碼會拋出「無效或不受支援的 Perl 語法:(?!」錯誤?

為什麼我的 Go 正規表示式程式碼會拋出「無效或不受支援的 Perl 語法:(?!」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-11-09 06:16:021076瀏覽

Why does my Go regex code throw an

無效的正規表示式解析錯誤:了解「錯誤解析正規表示式:無效或不受支援的Perl 語法:(?!」

遇到錯誤時“錯誤解析正則表達式:無效或不受支援的Perl 語法:(?!”,它表示Go 中使用的正則表達式語法存在問題。當使用Perl 的負向先行語法時會出現此特定錯誤,而Go 的regexp 套件不支援該語法。 On」開頭的字串,然後是訊息,但是Go 無法辨識該字串。負向先行語法(?!,這是Perl 特有的功能。

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

要解決此問題,您需要找到一種替代方法來表達一種選擇是使用兩個單獨的正則表達式:

然後您可以如下使用這些正則表達式:

這種方法允許您確定字串是否與第一個正規表示式匹配(意味著它不包含“On. On")並且與第二個正則表達式不匹配(意味著它不包含兩次“On”)。式:
first := regexp.MustCompile(`^On\s(.+?)wrote:$`)
second := regexp.MustCompile(`^On.*On\s.+?wrote:`)

然後您可以檢查是否存在匹配項,如果群組1(捕獲的子字串)以「On」結尾,則傳回true;如果是,則傳回false,否則是真的。

以上是為什麼我的 Go 正規表示式程式碼會拋出「無效或不受支援的 Perl 語法:(?!」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn