我的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包来解决这个问题吗?
答案 0 :(得分:2)
不支持Lookarounds,您可以使用可能的解决方法:
re := regexp.MustCompile(`'(.*?[^\\]|)'`)
values := re.FindAllStringSubmatch(theRawEnumValuesString, -1)