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

regexp.Regexp.FindReaderSubmatchIndex

Метод FindReaderSubmatchIndex выполняет поиск первого совпадения с регулярным выражением в данных, доступных через интерфейс io.RuneReader. В качестве первого аргумента он принимает указатель на объект, реализующий io.RuneReader. Вторым аргументом передается срез байтов []byte, который используется для поиска в буфере.

Возвращаемый результат — срез целых чисел []int. Если совпадение найдено, срез содержит пары индексов, указывающие начало и конец каждой подмаски (включая полное совпадение). Если совпадений нет, метод возвращает nil.

Синтаксис

func (re *Regexp) FindReaderSubmatchIndex(r io.RuneReader) []int

Пример

В этом примере мы ищем совпадение с регулярным выражением, которое содержит две подмаски. В качестве источника данных используется строка, преобразованная в strings.Reader.

package main import ( "fmt" "regexp" "strings" ) func main() { re := regexp.MustCompile(`(\d{4})-(\d{2})`) reader := strings.NewReader("2026-09") res := re.FindReaderSubmatchIndex(reader) fmt.Println(res) }

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

[0 7 0 4 5 7]

Индексы означают: полное совпадение занимает позиции с 0 по 7, первая подмаска — с 0 по 4, вторая подмаска — с 5 по 7.

Пример

Если совпадение не найдено, метод возвращает nil.

package main import ( "fmt" "regexp" "strings" ) func main() { re := regexp.MustCompile(`[a-z]+`) reader := strings.NewReader("12345") res := re.FindReaderSubmatchIndex(reader) fmt.Println(res) }

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

[]

В данном случае возвращается пустой срез, что означает отсутствие совпадений.

Пример

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

package main import ( "fmt" "regexp" "strings" ) func main() { re := regexp.MustCompile(`\d+`) reader := strings.NewReader("abc 123 def") res := re.FindReaderSubmatchIndex(reader) fmt.Println(res) }

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

[4 7]

Индексы указывают на первое найденное число в потоке: с 4 по 7 символ.

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

  • метод FindReaderIndex,
    который возвращает только индексы полного совпадения
  • метод FindStringSubmatchIndex,
    который выполняет аналогичный поиск, но работает со строкой
  • метод FindAllSubmatchIndex,
    который находит все совпадения в байтовом срезе
  • метод MatchReader,
    который проверяет наличие совпадения в io.RuneReader
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить