diff --git a/internal/code-generator/generator/heuristics.go b/internal/code-generator/generator/heuristics.go index 67a9c0c..a49ad87 100644 --- a/internal/code-generator/generator/heuristics.go +++ b/internal/code-generator/generator/heuristics.go @@ -160,11 +160,12 @@ func parseYaml(file string) (*Heuristics, error) { // isUnsupportedRegexpSyntax filters regexp syntax that is not supported by RE2. // In particular, we stumbled up on usage of next cases: +// - lookbehind & lookahead // - named & numbered capturing group/after text matching // - backreference // For referece on supported syntax see https://github.com/google/re2/wiki/Syntax func isUnsupportedRegexpSyntax(reg string) bool { - return strings.Contains(reg, `(?<`) || strings.Contains(reg, `\1`) || + return strings.Contains(reg, `(?<`) || strings.Contains(reg, `(?=`) || strings.Contains(reg, `\1`) || // See https://github.com/github/linguist/pull/4243#discussion_r246105067 (strings.HasPrefix(reg, multilinePrefix+`/`) && strings.HasSuffix(reg, `/`)) }