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

Метод 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,
    которая компилирует регулярное выражение с паникой при ошибке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить