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

Метод Regexp.FindAllStringSubmatchIndex

Метод Regexp.FindAllStringSubmatchIndex выполняет поиск всех непересекающихся совпадений регулярного выражения в переданной строке. Он возвращает срез срезов целых чисел, где каждый внутренний срез содержит индексы начала и конца для всего совпадения и для каждой захваченной подгруппы. Если совпадений не найдено, метод возвращает nil. Первый параметр метода — это строка для поиска, второй параметр — количество совпадений, которые нужно найти. Если передать -1, то будут найдены все совпадения.

Синтаксис

re.FindAllStringSubmatchIndex(s, n)

Пример

Давайте найдем все совпадения email-адресов и получим индексы их групп:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(\w+)@(\w+)\.(\w+)`) s := "my email: user@example.com and admin@site.org" res := re.FindAllStringSubmatchIndex(s, -1) fmt.Println(res) }

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

[[12 30 12 16 17 24 25 30] [36 50 36 41 42 46 47 50]]

В первом совпадении: общее совпадение с индексами [12,30], первая группа (имя пользователя) [12,16], вторая группа (домен) [17,24], третья группа (зона) [25,30].

Пример

Давайте найдем только первые 2 совпадения подстрок, начинающихся на цифру:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(\d{3})-(\d{2})`) s := "123-45, 678-90, 111-22, 999-00" res := re.FindAllStringSubmatchIndex(s, 2) fmt.Println(res) }

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

[[0 6 0 3 4 6] [8 14 8 11 12 14]]

Пример

Давайте обработаем случай, когда совпадений нет:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`\d+`) s := "abcde" res := re.FindAllStringSubmatchIndex(s, -1) fmt.Println(res) }

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

[]

Метод вернул пустой срез, так как в строке нет цифр.

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

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