Метод regexp.Regexp.Find

Метод Regexp.Find выполняет поиск первого совпадения с регулярным выражением в байтовом срезе. В качестве параметра метод принимает байтовый срез ([]byte), в котором производится поиск. Метод возвращает срез байт ([]byte), соответствующий первому найденному совпадению, или nil, если совпадение не найдено.

Если регулярное выражение содержит группы захвата, то метод возвращает только текст всего совпадения, без отдельных подсовпадений.

Синтаксис

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

Пример

Давайте найдем первое совпадение с регулярным выражением `\d+` (одна или более цифр) в строке "12345abcde67890":

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\d+`)
  b := []byte("12345abcde67890")
  res := re.Find(b)
  fmt.Println(string(res))
}

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

go"12345"

Пример

Давайте найдем первое совпадение с регулярным выражением `[a-z]+` (одна или более букв в нижнем регистре) в строке "12345abcde67890":

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`[a-z]+`)
  b := []byte("12345abcde67890")
  res := re.Find(b)
  fmt.Println(string(res))
}

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

go"abcde"

Пример

Если совпадение не найдено, метод возвращает nil. Давайте попробуем найти буквы в строке, состоящей только из цифр:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`[a-z]+`)
  b := []byte("1234567890")
  res := re.Find(b)
  fmt.Println(res == nil)
}

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

go"true"

Пример

Давайте найдем первое совпадение с регулярным выражением `\w+` (любые буквенно-цифровые символы и знак подчеркивания) в строке со специальными символами:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\w+`)
  b := []byte("hello!world@123")
  res := re.Find(b)
  fmt.Println(string(res))
}

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

go"hello"

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

  • метод Regexp.FindAll,
    который находит все неперекрывающиеся совпадения
  • метод Regexp.FindString,
    который ищет первое совпадение в строке
  • метод Regexp.FindIndex,
    который возвращает индексы первого совпадения
  • метод Regexp.FindAllString,
    который находит все совпадения в строке