From 04f99b387021a8ce32a8795360cba9beaf986a81 Mon Sep 17 00:00:00 2001 From: Ondřej Surý Date: Tue, 13 Sep 2011 12:00:31 +0200 Subject: Imported Upstream version 2011.09.07 --- src/pkg/exp/regexp/syntax/regexp.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/pkg/exp/regexp/syntax/regexp.go') diff --git a/src/pkg/exp/regexp/syntax/regexp.go b/src/pkg/exp/regexp/syntax/regexp.go index 00a4addef..d8f51b903 100644 --- a/src/pkg/exp/regexp/syntax/regexp.go +++ b/src/pkg/exp/regexp/syntax/regexp.go @@ -282,3 +282,17 @@ func escape(b *bytes.Buffer, r int, force bool) { b.WriteString(`}`) } } + +// MaxCap walks the regexp to find the maximum capture index. +func (re *Regexp) MaxCap() int { + m := 0 + if re.Op == OpCapture { + m = re.Cap + } + for _, sub := range re.Sub { + if n := sub.MaxCap(); m < n { + m = n + } + } + return m +} -- cgit v1.2.3