РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
424 of 1593 menu

Метод regexp.Regexp.FindIndex

Метод regexp.Regexp.FindIndex ищет самое левое совпадение регулярного выражения в байтовом срезе. Он возвращает срез из двух целых чисел - начальный и конечный индексы совпадения (полуоткрытый интервал). Если совпадение не найдено, метод возвращает nil. Первым параметром метод принимает байтовый срез ([]byte), в котором производится поиск.

Синтаксис

re.FindIndex(b)

Пример

Давайте найдем позицию подстроки "abc" в байтовом срезе:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`abc`) b := []byte("123abc456") res := re.FindIndex(b) fmt.Println(res) }

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

[3 6]

Индексы указывают, что совпадение начинается с позиции 3 (нумерация с нуля) и заканчивается на позиции 6 (не включая ее).

Пример

Давайте найдем позицию цифр в байтовом срезе:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`\d+`) b := []byte("abc123def456") res := re.FindIndex(b) fmt.Println(res) }

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

[3 6]

Метод находит самую левую последовательность цифр, начиная с индекса 3 и заканчивая индексом 6.

Пример

Давайте попробуем найти позицию подстроки, которой нет в байтовом срезе:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`xyz`) b := []byte("abcde12345") res := re.FindIndex(b) fmt.Println(res) }

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

[]int(nil)

Метод возвращает nil, так как подстрока не найдена.

Пример

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

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`[0-9]+`) b := []byte("abc123def456") indices := re.FindIndex(b) if indices != nil { match := b[indices[0]:indices[1]] fmt.Printf("Match: %s, Start: %d, End: %d\n", match, indices[0], indices[1]) } }

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

"Match: 123, Start: 3, End: 6"

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

  • метод regexp.Regexp.FindStringIndex,
    который возвращает индексы совпадения в строке
  • метод regexp.Regexp.FindAllIndex,
    который возвращает индексы всех совпадений
  • метод regexp.Regexp.Find,
    который возвращает найденную подстроку
  • метод regexp.Regexp.FindString,
    который возвращает найденную подстроку в виде строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить