解析regexp时出错:Perl语法无效或不受支持:`(?!`

Gir*_*iri 12 regex go

当我在golang中尝试这个正则表达式时,我得到正则表达式解析错误.

解析regexp时出错:Perl语法无效或不受支持: (?!

regexp.MustCompile("^(?!On.*On\\s.+?wrote:)(On\\s(.+?)wrote:)$"),
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我为什么它不起作用并帮助我解决这个问题?

谢谢

Wik*_*żew 5

Go正则表达式不支持环顾四周。

作为解决方法,您可以使用

regexp.MustCompile("^On\\s(.+?)wrote:$")
Run Code Online (Sandbox Code Playgroud)

regexp.MustCompile("^On.*On\\s.+?wrote:")
Run Code Online (Sandbox Code Playgroud)

并检查第一个是否匹配字符串,第二个不匹配。

您还可以添加一个可选的捕获组 (.*On)?

regexp.MustCompile("^On(.*On)?\\s.+?wrote:")
Run Code Online (Sandbox Code Playgroud)

并检查是否有匹配,返回,如果第一组结束与On-如果是,则返回,否则