Метод regexp.Regexp.FindIndex
Метод regexp.Regexp.FindIndex ищет самое левое совпадение
регулярного выражения в байтовом срезе. Он возвращает срез из двух
целых чисел - начальный и конечный индексы совпадения (полуоткрытый
интервал). Если совпадение не найдено, метод возвращает nil.
Первым параметром метод принимает байтовый срез ([]byte),
в котором производится поиск.
Синтаксис
re.FindIndex(b)
Пример
Давайте найдем позицию подстроки "abc" в байтовом срезе:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`abc`)
b := []byte("123abc456")
res := re.FindIndex(b)
fmt.Println(res)
}
Результат выполнения кода:
[3 6]
Индексы указывают, что совпадение начинается с позиции 3 (нумерация с нуля) и заканчивается на позиции 6 (не включая ее).
Пример
Давайте найдем позицию цифр в байтовом срезе:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\d+`)
b := []byte("abc123def456")
res := re.FindIndex(b)
fmt.Println(res)
}
Результат выполнения кода:
[3 6]
Метод находит самую левую последовательность цифр, начиная с индекса 3 и заканчивая индексом 6.
Пример
Давайте попробуем найти позицию подстроки, которой нет в байтовом срезе:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`xyz`)
b := []byte("abcde12345")
res := re.FindIndex(b)
fmt.Println(res)
}
Результат выполнения кода:
[]int(nil)
Метод возвращает nil, так как подстрока не найдена.
Пример
Давайте используем найденные индексы для извлечения совпавшей подстроки:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`[0-9]+`)
b := []byte("abc123def456")
indices := re.FindIndex(b)
if indices != nil {
match := b[indices[0]:indices[1]]
fmt.Printf("Match: %s, Start: %d, End: %d\n", match, indices[0], indices[1])
}
}
Результат выполнения кода:
"Match: 123, Start: 3, End: 6"
Смотрите также
-
метод
regexp.Regexp.FindStringIndex,
который возвращает индексы совпадения в строке -
метод
regexp.Regexp.FindAllIndex,
который возвращает индексы всех совпадений -
метод
regexp.Regexp.Find,
который возвращает найденную подстроку -
метод
regexp.Regexp.FindString,
который возвращает найденную подстроку в виде строки