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

regexp.Regexp.FindReaderIndex

Метод regexp.Regexp.FindReaderIndex находит первое совпадение регулярного выражения в данных, полученных из интерфейса io.RuneReader, и возвращает срез из двух целых чисел — индексы начала и конца совпадения в рунах. Если совпадение не найдено, метод возвращает nil. В отличие от методов, работающих со строками или байтовыми срезами, этот метод предназначен для потокового чтения данных, когда весь текст недоступен сразу.

Синтаксис

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

Метод принимает один параметр — интерфейс io.RuneReader, из которого читаются руны для поиска. Возвращает срез []int с двумя индексами: первый индекс — позиция начала совпадения, второй — позиция конца совпадения (не включая последний символ). Если совпадений нет, возвращается nil.

Пример

Давайте найдём первое числовое совпадение в тексте, прочитанном из строки через strings.NewReader:

package main import ( "fmt" "regexp" "strings" ) func main() { re := regexp.MustCompile(`\d+`) r := strings.NewReader("abc 123 def 456") indexes := re.FindReaderIndex(r) fmt.Println(indexes) }

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

[4 7]

Индексы [4 7] означают, что совпадение начинается с 4-й руны и заканчивается перед 7-й руной (руны с индексами 4, 5 и 6 составляют число "123").

Пример

Давайте найдём совпадение по шаблону слова из букв латинского алфавита в потоке данных:

package main import ( "fmt" "regexp" "strings" ) func main() { re := regexp.MustCompile(`[A-Za-z]+`) r := strings.NewReader("Hello, World!") indexes := re.FindReaderIndex(r) fmt.Println(indexes) }

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

[0 5]

Индексы [0 5] указывают на то, что совпадение найдено в позициях с 0 по 5 (слово "Hello").

Пример

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

package main import ( "fmt" "regexp" "strings" ) func main() { re := regexp.MustCompile(`\d+`) r := strings.NewReader("abc def") indexes := re.FindReaderIndex(r) fmt.Println(indexes) }

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

[]

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

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить