在regex中匹配字符串的开头并排除字符串的末尾



我有一些字符串,如下所示:

abc4back
abc4backpre
abc4front
abc4frontpre
abc3side
abc3sidepre
xyz4over
xyz4overpre

我只想用";abc4";但没有";pre";。到目前为止,我的正则表达式是:
abc4.*(?!pre)

但是,当我运行此程序时,我得到了错误:
error parsing regexp: invalid or unsupported Perl syntax: `(?!`

我现在知道这是因为在go中不支持lookahead。

但是,我不知道应该用什么表达式来代替?!。有人知道什么有效吗?

您可以通过将多个否定字符作为来实现这一点

^abc4(?:.*(?:[^p].{2}|p[^r].{1}|pr[^e])|.{0,2})$

Regex Demo

最新更新