Метод Regexp.FindAll

Метод Regexp.FindAll выполняет поиск всех непересекающихся совпадений с регулярным выражением в строке и возвращает их в виде слайса [][]byte. В первый параметр передается строка для поиска в виде []byte, во второй параметр передается максимальное количество совпадений, которое нужно найти. Если передать -1, метод найдет все совпадения.

Синтаксис

gore.FindAll(text, n)

Пример

Давайте найдем все последовательности цифр в строке:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\d+`)
  res := re.FindAll([]byte("abc123def456ghi789"), -1)
  fmt.Println(res)
}

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

go[[49 50 51] [52 53 54] [55 56 57]]

Пример

Давайте найдем только первые два совпадения с буквами:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`[a-z]+`)
  res := re.FindAll([]byte("abc123def456ghi"), 2)
  fmt.Println(res)
}

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

go[[97 98 99] [100 101 102]]

Пример

Давайте проверим случай, когда совпадений нет:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\d+`)
  res := re.FindAll([]byte("abcdef"), -1)
  fmt.Println(res)
}

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

go[]

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

  • метод Regexp.Find,
    который находит только первое совпадение
  • метод Regexp.FindAllString,
    который возвращает совпадения в виде слайса строк
  • метод Regexp.FindAllSubmatch,
    который возвращает совпадения с подвыражениями
  • метод Regexp.Match,
    который проверяет наличие совпадения