diff options
author | Russ Cox <rsc@golang.org> | 2015-11-25 12:32:34 -0500 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2015-12-01 22:45:12 +0000 |
commit | 0680e9c0c16a7d900e3564e1836b8cb93d962a2b (patch) | |
tree | c3d48ad54d9c2b08b70cb62a9c6b49f296210cc1 /src/regexp/syntax/parse.go | |
parent | 5fc583854f1ce1c95487e5b4e170ca5f32bfca36 (diff) | |
download | go-0680e9c0c16a7d900e3564e1836b8cb93d962a2b.tar.gz go-0680e9c0c16a7d900e3564e1836b8cb93d962a2b.zip |
regexp/syntax: fix handling of \Q...\E
It's not a group: must handle the inside as a sequence of literal chars,
not a single literal string.
That is, \Qab\E+ is the same as ab+, not (ab)+.
Fixes #11187.
Change-Id: I5406d05ccf7efff3a7f15395bdb0cfb2bd23a8ed
Reviewed-on: https://go-review.googlesource.com/17233
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/regexp/syntax/parse.go')
-rw-r--r-- | src/regexp/syntax/parse.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/regexp/syntax/parse.go b/src/regexp/syntax/parse.go index d579a4069b..c2b92c1d44 100644 --- a/src/regexp/syntax/parse.go +++ b/src/regexp/syntax/parse.go @@ -830,7 +830,14 @@ func Parse(s string, flags Flags) (*Regexp, error) { lit = t[2:i] t = t[i+2:] } - p.push(literalRegexp(lit, p.flags)) + for lit != "" { + c, rest, err := nextRune(lit) + if err != nil { + return nil, err + } + p.literal(c) + lit = rest + } break BigSwitch case 'z': p.op(OpEndText) |