Метод regexp.Regexp.FindStringIndex
Метод regexp.Regexp.FindStringIndex выполняет поиск первого совпадения с регулярным выражением в указанной строке. Он возвращает срез из двух целых чисел: индекс начала и индекс конца найденного совпадения. Если совпадение не найдено, метод возвращает nil. Первым параметром метод принимает строку для поиска.
Синтаксис
re.FindStringIndex(s string) []int
Пример
Давайте найдем индексы первого совпадения с регулярным выражением `\d+` (одна или более цифр) в строке "abc123def456":
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\d+`)
res := re.FindStringIndex("abc123def456")
fmt.Println(res)
}
Результат выполнения кода:
[3 6]
Индексы [3 6] означают, что совпадение начинается с 3-го символа (индекс 3) и заканчивается перед 6-м символом (индекс 6), то есть захватывает подстроку "123".
Пример
Давайте найдем индексы первого совпадения с регулярным выражением `[A-Z]+` (одна или более заглавных букв) в строке "GoLang":
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`[A-Z]+`)
res := re.FindStringIndex("GoLang")
fmt.Println(res)
}
Результат выполнения кода:
[0 1]
Индексы [0 1] означают, что совпадение находится в самом начале строки и захватывает только первый символ "G". Обратите внимание, что поиск останавливается после нахождения первого совпадения.
Пример
Давайте попробуем найти совпадение, которого нет в строке. Используем регулярное выражение `\d+` для строки "abcde":
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\d+`)
res := re.FindStringIndex("abcde")
fmt.Println(res)
}
Результат выполнения кода:
[]
Метод возвращает пустой срез [], так как совпадение не найдено.
Смотрите также
-
метод
regexp.Regexp.FindString,
который возвращает само найденное совпадение в виде строки -
метод
regexp.Regexp.FindIndex,
который выполняет поиск в срезе байтов и возвращает индексы -
метод
regexp.Regexp.FindAllStringIndex,
который находит индексы всех совпадений в строке -
функцию
regexp.MustCompile,
которая компилирует регулярное выражение с паникой при ошибке