2016-08-13 41 views
2

當我嘗試這個表達式中golang我得到的正則表達式解析錯誤錯誤解析正則表達式:無效或不支持的Perl語法:`(`

錯誤解析正則表達式:?!無效或不支持的Perl語法:(?!

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

誰能告訴我爲什麼它不工作,幫助我解決這個問題?

感謝

+0

go regexp軟件包使用RE2語法,而不是PCRE https://github.com/google/re2/wiki/Syntax – JimB

+0

'(?!re)\t之前文本不匹配re(NOT SUPPORTED)'從頁面[這裏](https://github.com/google/re2/wiki/Syntax) – SomeDude

+0

@svasa任何替代方法,使其工作? – user1091558

回答

1

Go正則表達式不支持lookarounds。

作爲一種變通方法,您可以使用

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

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

,並檢查第一個字符串匹配和第二個沒有。

您還可以添加一個可選的捕獲組(.*On)?

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

,並檢查是否有匹配,並返回如果組1 On結束 - 如果是,返回,否則

相關問題