РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
412 of 1593 menu

Функция regexp.MustCompilePOSIX

Функция regexp.MustCompilePOSIX компилирует регулярное выражение в соответствии с синтаксисом POSIX. Если компиляция завершается ошибкой, функция вызывает панику, что делает ее удобной для использования на этапе инициализации, когда регулярное выражение заведомо корректно. В первый параметр мы передаем строку с регулярным выражением в синтаксисе POSIX, а возвращает функция указатель на структуру Regexp. В отличие от regexp.MustCompile, эта функция использует более строгий POSIX-алгоритм, который ищет самый длинный возможный вариант совпадения.

Синтаксис

regexp.MustCompilePOSIX(str)

Пример

Давайте скомпилируем POSIX-совместимое регулярное выражение для поиска последовательности цифр и проверим его работу:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompilePOSIX(`[0-9]+`) res := re.FindString("abc123def456") fmt.Println(res) }

Результат выполнения кода:

"123"

Пример

Давайте сравним работу POSIX-компиляции с обычной компиляцией на примере альтернативного выбора, где POSIX находит самое длинное совпадение:

package main import ( "fmt" "regexp" ) func main() { rePosix := regexp.MustCompilePOSIX(`a|ab`) reStd := regexp.MustCompile(`a|ab`) resPosix := rePosix.FindString("abc") resStd := reStd.FindString("abc") fmt.Println("POSIX:", resPosix) fmt.Println("Standard:", resStd) }

Результат выполнения кода:

"POSIX: ab" "Standard: a"

Пример

Функция вызывает панику при некорректном регулярном выражении. Давайте посмотрим, что произойдет при попытке скомпилировать невалидное выражение:

package main import ( "fmt" "regexp" ) func main() { defer func() { if r := recover(); r != nil { fmt.Println("Panic recovered:", r) } }() re := regexp.MustCompilePOSIX(`[0-9+`) res := re.FindString("abc123") fmt.Println(res) }

Результат выполнения кода:

"Panic recovered: error parsing regexp: missing closing ]: `[0-9+`"

Смотрите также

  • функцию regexp.CompilePOSIX,
    которая компилирует POSIX-совместимое выражение с возвратом ошибки
  • функцию regexp.MustCompile,
    которая компилирует стандартное выражение с паникой при ошибке
  • функцию regexp.Compile,
    которая компилирует стандартное выражение с возвратом ошибки
  • метод Regexp.FindString,
    который находит первое совпадение в строке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить