Функция 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,
который находит первое совпадение в строке