Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpRgLm 139 of 280 menu
◀ ▶

Чего нет в движке RE2 в Go

}

Движок RE2 сознательно не реализует часть приемов из других библиотек. Их нельзя обойти флагом: шаблон либо не соберется, либо не будет работать так, как в учебниках по другим языкам.

Нет просмотра вперед и назад, нет обратных ссылок на уже найденный текст вроде \1, нет ревнивых квантификаторов с фигурными скобками в стиле других движков. В Go ленивость задают только *?, +? и ?? после обычных квантификаторов. Обратная ссылка внутри образца тоже не поддерживается: без этих приемов задачу решают якорями, несколькими шагами или обычной строковой логикой.

Попытка собрать просмотр вперед часто заканчивается ошибкой сборки:

package main import ( "fmt" "regexp" ) func main() { _, err := regexp.Compile(`a(?=b)`) fmt.Println(err != nil) }

Дан следующий код:

_, err := regexp.Compile(`(.)\1`) fmt.Println(err != nil)

Скажите, соберется ли шаблон с обратной ссылкой.

Дан следующий код:

_, err := regexp.Compile(`(?<=a)b`)

Скажите, поддерживается ли просмотр назад.

Дана строка:

txt := "demo"

Объясните, как проверить суффикс без просмотра назад, используя якоря или два шага.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить