Метод regexp.Regexp.FindString
Метод Regexp.FindString выполняет поиск первого совпадения
с регулярным выражением в строке. Он возвращает найденную
подстроку, если совпадение найдено, или пустую строку,
если совпадений нет. Метод принимает один параметр -
строку для поиска.
Важно понимать, что пустая строка может быть возвращена как в случае отсутствия совпадений, так и в случае, когда найдено совпадение с пустой строкой (например, при использовании квантификаторов, допускающих нулевое количество повторений).
Синтаксис
re.FindString(str)
где re - скомпилированное регулярное выражение,
а str - строка для поиска.
Пример
Давайте найдем в строке 'abcde' первое совпадение
с регулярным выражением, которое ищет символы от 'c'
до 'e':
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`[c-e]+`)
res := re.FindString("abcde")
fmt.Println(res)
}
Результат выполнения кода:
"cde"
Метод нашел первое совпадение - подстроку 'cde',
так как она соответствует регулярному выражению.
Пример
Давайте попробуем найти в строке 'abcde' первое
совпадение с регулярным выражением, которое ищет
символы от 'x' до 'z':
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`[x-z]+`)
res := re.FindString("abcde")
fmt.Println(res)
}
Результат выполнения кода:
""
Метод вернул пустую строку, так как в строке
'abcde' нет символов от 'x' до 'z'.
Пример
Давайте рассмотрим случай, когда регулярное выражение
может найти пустую строку. Найдем в строке '123'
первое совпадение с выражением, которое ищет
последовательности из цифр, но допускает нулевое
количество повторений:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\d*`)
res := re.FindString("123")
fmt.Println(res)
}
Результат выполнения кода:
"123"
В этом случае метод нашел самую длинную возможную
подстроку '123', так как квантификатор *
является жадным и старается захватить как можно
больше символов.
Пример
Давайте найдем первое совпадение с регулярным выражением, которое ищет слово из букв латинского алфавита в строке с несколькими словами:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`[a-z]+`)
res := re.FindString("hello world go")
fmt.Println(res)
}
Результат выполнения кода:
"hello"
Метод нашел только первое совпадение - слово
'hello', несмотря на то, что в строке есть
и другие слова.
Смотрите также
-
метод
Regexp.FindAllString,
который находит все совпадения с регулярным выражением -
метод
Regexp.FindStringIndex,
который возвращает индексы первого совпадения -
метод
Regexp.FindStringSubmatch,
который возвращает подстроки, соответствующие подвыражениям -
функцию
regexp.MustCompile,
которая компилирует регулярное выражение с паникой при ошибке