cpp

Регулярные выражения. Поиск полного соответствия шаблону

Получить совпадения с шаблоном позволяют следующие методы:

  • FindAllString() — возвращает слайс с фрагментами, соответствующими шаблону регулярного выражения. Во втором параметре можно указать максимальное количество элементов слайса. Чтобы получить все фрагменты нужно передать значение -1. Формат метода:
(*regexp.Regexp).FindAllString(s string, n int) []string

Пример:

re := regexp.MustCompile(`[0-9]+`)
fmt.Println(re.FindAllString("10 20 30", 2))    // [10 20]
fmt.Println(re.FindAllString("10 20 30", -1))   // [10 20 30]
fmt.Println(re.FindAllString("str", -1) == nil) // true
  • FindAll() — возвращает двумерный слайс с фрагментами, соответствующими шаблону регулярного выражения. Во втором параметре можно указать максимальное количество элементов слайса. Чтобы получить все фрагменты нужно передать значение -1. Формат метода:
(*regexp.Regexp).FindAll(b []byte, n int) [][]byte

Пример:

re := regexp.MustCompile(`[0-9]+`)
fmt.Printf("%q\n", re.FindAll([]byte("10 20 30"), 2))
// ["10" "20"]
fmt.Printf("%q\n", re.FindAll([]byte("10 20 30"), -1))
// ["10" "20" "30"]
fmt.Printf("%v\n", re.FindAll([]byte("str"), -1) == nil)
// true
  • FindString() — возвращает строку с первым фрагментом, соответствующим шаблону регулярного выражения. Если совпадения нет, то возвращается пустая строка. Формат метода:
(*regexp.Regexp).FindString(s string) string

Пример:

re := regexp.MustCompile(`[0-9]+`)
fmt.Println(re.FindString("10 20 30"))   // 10
fmt.Printf("%q\n", re.FindString("str")) // ""
  • Find() — возвращает байтовый слайс с первым фрагментом, соответствующим шаблону регулярного выражения. Если совпадения нет, то возвращается значение nil. Формат метода:
(*regexp.Regexp).Find(b []byte) []byte

Пример:

re := regexp.MustCompile(`[0-9]+`)
fmt.Printf("%q\n", re.Find([]byte("10 20 30")))   // "10"
fmt.Printf("%v\n", re.Find([]byte("str")) == nil) // true
  • FindAllStringIndex() — возвращает двумерный слайс с индексами начала и конца фрагментов, соответствующих шаблону регулярного выражения. Во втором параметре можно указать максимальное количество элементов слайса. Чтобы получить все фрагменты нужно передать значение -1. Формат метода:
(*regexp.Regexp).FindAllStringIndex(s string, n int) [][]int

Пример:

re := regexp.MustCompile(`[0-9]+`)
arr := re.FindAllStringIndex("10 20 30", 2)
fmt.Println(arr)
// [[0 2] [3 5]]
fmt.Println("10 20 30"[arr[0][0]:arr[0][1]])
// 10
fmt.Println(re.FindAllStringIndex("10 20 30", -1))
// [[0 2] [3 5] [6 8]]
fmt.Println(re.FindAllStringIndex("str", -1) == nil)
// true
  • FindAllIndex() — возвращает двумерный слайс с индексами начала и конца фрагментов, соответствующих шаблону регулярного выражения. Во втором параметре можно указать максимальное количество элементов слайса. Чтобы получить все фрагменты нужно передать значение -1. Формат метода:
(*regexp.Regexp).FindAllIndex(b []byte, n int) [][]int

Пример:

re := regexp.MustCompile(`[0-9]+`)
fmt.Println(re.FindAllIndex([]byte("10 20 30"), 2))
// [[0 2] [3 5]]
fmt.Println(re.FindAllIndex([]byte("10 20 30"), -1))
// [[0 2] [3 5] [6 8]]
fmt.Println(re.FindAllIndex([]byte("str"), -1) == nil)
// true
  • FindStringIndex() — возвращает слайс с индексами начала и конца первого фрагмента, соответствующего шаблону регулярного выражения. Формат метода:
(*regexp.Regexp).FindStringIndex(s string) (loc []int)

Пример:

re := regexp.MustCompile(`[0-9]+`)
fmt.Println(re.FindStringIndex("10 20 30"))   // [0 2]
fmt.Println(re.FindStringIndex("str") == nil) // true
  • FindIndex() — возвращает слайс с индексами начала и конца первого фрагмента, соответствующего шаблону регулярного выражения. Формат метода:
(*regexp.Regexp).FindIndex(b []byte) (loc []int)

Пример:

re := regexp.MustCompile(`[0-9]+`)
fmt.Println(re.FindIndex([]byte("10 20 30")))   // [0 2]
fmt.Println(re.FindIndex([]byte("str")) == nil) // true
  • FindReaderIndex() — возвращает слайс с индексами начала и конца первого фрагмента, соответствующего шаблону регулярного выражения. Формат метода:
(*regexp.Regexp).FindReaderIndex(r io.RuneReader) (loc []int)

Пример:

re := regexp.MustCompile(`[0-9]+`)
fmt.Println(re.FindReaderIndex(strings.NewReader("10 20 30")))
// [0 2]
fmt.Println(re.FindReaderIndex(strings.NewReader("str")) == nil)
// true

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp