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

Метод regexp.Regexp.FindSubmatchIndex

Метод FindSubmatchIndex выполняет поиск совпадений с регулярным выражением в байтовом срезе и возвращает срез целых чисел, содержащий индексы начала и конца найденного совпадения, а также индексы всех подвыражений (групп) внутри него. Если совпадение не найдено, метод возвращает nil.

Метод принимает один параметр — байтовый срез []byte, в котором выполняется поиск.

Синтаксис

re.FindSubmatchIndex(b)

где re — скомпилированное регулярное выражение, а b — байтовый срез для поиска.

Пример

Давайте найдем индексы совпадения и всех групп в байтовом срезе:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(\w+)@(\w+)\.(\w+)`) b := []byte("user@example.com") res := re.FindSubmatchIndex(b) fmt.Println(res) }

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

[0 16 0 4 5 12 13 16]

В результате каждый элемент среза — это пара индексов: начало и конец соответствующей подстроки. Первая пара 0 16 — это индексы всего совпадения, следующие пары — индексы групп: 0 4 (первая группа user), 5 12 (вторая группа example) и 13 16 (третья группа com).

Пример

Давайте найдем индексы совпадения с регулярным выражением, содержащим несколько групп:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(\d{2})-(\d{2})-(\d{4})`) b := []byte("Дата: 25-12-2024") res := re.FindSubmatchIndex(b) fmt.Println(res) }

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

[6 16 6 8 9 11 12 16]

В данном примере совпадение найдено по индексам 6 16, а три группы находятся по индексам 6 8, 9 11 и 12 16.

Пример

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

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

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

[]

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

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

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