消极的Lookbehind失败

时间:2015-02-28 18:52:10

标签: regex go

我的Golang代码中有一个小的MySQL表检查器脚本。我想做的最后一件事是在我的应用程序启动时存储任何可能的enum值,这样我就可以从缓冲区读取它,而不必为API调用不断描述表。

现在有了enum 'value1','value2','value\'s3之类的内容,'(.*?)'之类的简单RegEx因为{{}}中的转义引号而无法正常工作1}}。所以我写了一个负面的后视,只有当它是一个非转义的引号时才能匹配。不完全完美,但至少有一些额外的检查,我自己管理数据库结构,所以我可以保持一个小笔记。

至关重要;负面观察失败value\'s3

'(.*?)(?<!\\)'

代码:

panic: regexp: Compile(`'(.*?)(?<!\\)'`): error parsing regexp: invalid or unsupported Perl syntax: `(?<`

前瞻/外观是否正式不属于RegEx功能的核心部分,还是只是Golang还没有实现?

Go会有另一种解决方法或扩展的RegEx包来解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

不支持Lookarounds,您可以使用可能的解决方法:

re := regexp.MustCompile(`'(.*?[^\\]|)'`)
values := re.FindAllStringSubmatch(theRawEnumValuesString, -1)