regexp.Regexp.FindSubmatch
Метод Regexp.FindSubmatch выполняет поиск первого совпадения с регулярным выражением в переданном байтовом срезе. Он возвращает срез байтовых срезов, где нулевой элемент — это полное совпадение, а последующие элементы — содержимое групп захвата. Если совпадений не найдено, метод возвращает nil. Первым параметром метод принимает байтовый срез для поиска.
Синтаксис
re.FindSubmatch(b []byte) [][]byte
Пример
Давайте найдем первое совпадение с группой захвата в байтовом срезе:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`(\d+)-([a-z]+)`)
res := re.FindSubmatch([]byte("123-abc 456-def"))
fmt.Printf("%q", res)
}
Результат выполнения кода:
["123-abc" "123" "abc"]
Пример
Поиск без групп захвата вернет только полное совпадение:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\d+-\w+`)
res := re.FindSubmatch([]byte("123-abc 456-def"))
fmt.Printf("%q", res)
}
Результат выполнения кода:
["123-abc"]
Пример
Если совпадений нет, метод возвращает nil:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\d{4}`)
res := re.FindSubmatch([]byte("123-abc"))
fmt.Printf("%q", res)
}
Результат выполнения кода:
[]
Смотрите также
-
метод
Regexp.FindSubmatchIndex,
который возвращает индексы групп захвата -
метод
Regexp.FindAllSubmatch,
который находит все совпадения с группами захвата -
метод
Regexp.FindStringSubmatch,
который ищет совпадения в строке -
функцию
regexp.MustCompile,
которая компилирует регулярное выражение с паникой при ошибке