Ленивый квантификатор в Go
По умолчанию квантификаторы жадные: берут максимум символов. После звездочки или плюса можно поставить вопрос, и повтор станет ленивым, минимальным.
Сравним жадную и ленивую звездочку между якорями слов:
package main
import (
"fmt"
"regexp"
)
func main() {
greedy := regexp.MustCompile(`".*"`)
lazy := regexp.MustCompile(`".*?"`)
txt := `"a" "bc" "d"`
fmt.Println(greedy.FindAllString(txt, -1))
fmt.Println(lazy.FindAllString(txt, -1))
}
Дана строка:
txt := "<b>x</b> <i>y</i>"
Напишите ленивый образец для текста между < и > без захвата лишнего.
Дана строка:
txt := "aaa aa a"
Скажите, чем отличается a+ от a+? на короткой строке.
Дана строка:
txt := "start middle end"
Возьмите ленивый фрагмент между словами "start" и "end".