regexp.Regexp.FindSubmatch

Метод Regexp.FindSubmatch выполняет поиск первого совпадения с регулярным выражением в переданном байтовом срезе. Он возвращает срез байтовых срезов, где нулевой элемент — это полное совпадение, а последующие элементы — содержимое групп захвата. Если совпадений не найдено, метод возвращает nil. Первым параметром метод принимает байтовый срез для поиска.

Синтаксис

gore.FindSubmatch(b []byte) [][]byte

Пример

Давайте найдем первое совпадение с группой захвата в байтовом срезе:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`(\d+)-([a-z]+)`)
  res := re.FindSubmatch([]byte("123-abc 456-def"))
  fmt.Printf("%q", res)
}

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

go["123-abc" "123" "abc"]

Пример

Поиск без групп захвата вернет только полное совпадение:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\d+-\w+`)
  res := re.FindSubmatch([]byte("123-abc 456-def"))
  fmt.Printf("%q", res)
}

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

go["123-abc"]

Пример

Если совпадений нет, метод возвращает nil:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\d{4}`)
  res := re.FindSubmatch([]byte("123-abc"))
  fmt.Printf("%q", res)
}

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

go[]

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

  • метод Regexp.FindSubmatchIndex,
    который возвращает индексы групп захвата
  • метод Regexp.FindAllSubmatch,
    который находит все совпадения с группами захвата
  • метод Regexp.FindStringSubmatch,
    который ищет совпадения в строке
  • функцию regexp.MustCompile,
    которая компилирует регулярное выражение с паникой при ошибке