Метод regexp.Regexp.FindStringIndex

Метод regexp.Regexp.FindStringIndex выполняет поиск первого совпадения с регулярным выражением в указанной строке. Он возвращает срез из двух целых чисел: индекс начала и индекс конца найденного совпадения. Если совпадение не найдено, метод возвращает nil. Первым параметром метод принимает строку для поиска.

Синтаксис

gore.FindStringIndex(s string) []int

Пример

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

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\d+`)
  res := re.FindStringIndex("abc123def456")
  fmt.Println(res)
}

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

go[3 6]

Индексы [3 6] означают, что совпадение начинается с 3-го символа (индекс 3) и заканчивается перед 6-м символом (индекс 6), то есть захватывает подстроку "123".

Пример

Давайте найдем индексы первого совпадения с регулярным выражением `[A-Z]+` (одна или более заглавных букв) в строке "GoLang":

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`[A-Z]+`)
  res := re.FindStringIndex("GoLang")
  fmt.Println(res)
}

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

go[0 1]

Индексы [0 1] означают, что совпадение находится в самом начале строки и захватывает только первый символ "G". Обратите внимание, что поиск останавливается после нахождения первого совпадения.

Пример

Давайте попробуем найти совпадение, которого нет в строке. Используем регулярное выражение `\d+` для строки "abcde":

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\d+`)
  res := re.FindStringIndex("abcde")
  fmt.Println(res)
}

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

go[]

Метод возвращает пустой срез [], так как совпадение не найдено.

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

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