Использование positive-lookahead (?=регулярное выражение) с re2
так как я немного новичок с ле2, Я пытаюсь понять, как использовать positive-lookahead (?=regex)
как JS, C++ или любой стиль PCRE в Go.
вот несколько примеров того, что я ищу.
JS:
'foo bar baz'.match(/^[sS]+?(?=baz|$)/);
Python:
re.match('^[sS]+?(?=baz|$)', 'foo bar baz')
- Примечание: оба примера соответствуют
'foo bar '
Спасибо большое.
2 ответов
по словам Синтаксис Документация эта функция не поддерживается:
(?=re)
перед текстом соответствующегоre
(НЕ ПОДДЕРЖИВАЕТСЯ)
С WhyRE2:
в принципе, RE2 не поддерживает конструкции, для которых известны только обратные решения. Таким образом, утверждения backreferences и look-around не поддерживаются.
вы можете достичь этого с помощью более простого regexp:
re := regexp.MustCompile(`^(.+?)(?:baz)?$`)
sm := re.FindStringSubmatch("foo bar baz")
fmt.Printf("%q\n", sm)
sm[1]
будет ваш матч. Площадка: http://play.golang.org/p/Vyah7cfBlH