Метод regexp.Regexp.FindStringSubmatchIndex
Метод FindStringSubmatchIndex используется для поиска
первого совпадения с регулярным выражением в строке.
В отличие от FindStringIndex, этот метод также возвращает
индексы для каждой захваченной подгруппы.
Метод возвращает срез целых чисел, который содержит пары
индексов начала и конца каждого совпадения.
Если совпадений не найдено, метод возвращает nil.
Синтаксис
re.FindStringSubmatchIndex(s string) []int
Первый и единственный параметр FindStringSubmatchIndex
принимает строку, в которой нужно выполнить поиск.
Пример
Давайте найдем индексы для совпадения с регулярным выражением
`(\d{2})-(\d{2})` в строке "12-34":
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`(\d{2})-(\d{2})`)
res := re.FindStringSubmatchIndex("12-34")
fmt.Println(res)
}
Результат выполнения кода:
[0 5 0 2 3 5]
Индексы в срезе интерпретируются парами: первая пара (0, 5) — это индексы всего совпадения, вторая пара (0, 2) — индексы первой подгруппы ("12"), третья пара (3, 5) — индексы второй подгруппы ("34").
Пример
Рассмотрим случай, когда совпадение не найдено:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\d+`)
res := re.FindStringSubmatchIndex("abc")
fmt.Println(res)
}
Результат выполнения кода:
[]
В данном случае регулярное выражение ищет цифры, но строка не содержит цифр, поэтому возвращается пустой срез.
Пример
Метод возвращает индексы только первого совпадения, даже если в строке их несколько:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`(\d+)`)
res := re.FindStringSubmatchIndex("123 456 789")
fmt.Println(res)
}
Результат выполнения кода:
[0 3 0 3]
Как видно, метод вернул индексы только для первого числа "123".
Смотрите также
-
метод
regexp.Regexp.FindAllStringSubmatchIndex,
который возвращает индексы для всех совпадений -
метод
regexp.Regexp.FindStringSubmatch,
который возвращает сами строки совпадений и подгрупп -
метод
regexp.Regexp.FindStringIndex,
который возвращает индексы только для всего совпадения -
функцию
regexp.MustCompile,
которая компилирует регулярное выражение с паникой при ошибке