Go Academy · Урок

Основы regexp

Компилируйте и сопоставляйте шаблоны

Урок 1 из 413 шагов

«Основы regexp» — бесплатный урок Go Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

Что такое регулярное выражение

Регулярное выражение (regexp) — это шаблон, который описывает множество строк. В Go для работы с регулярными выражениями используется специальный пакет.

Регулярные выражения отлично подходят для проверки и поиска текста.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    matched, _ := regexp.MatchString("go+", "gooo")
    fmt.Println(matched)
}

Быстрое сопоставление с помощью MatchString

regexp.MatchString(pattern, s) сообщает, встречается ли шаблон где-либо в s. Метод возвращает логическое значение и ошибку.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    ok, _ := regexp.MatchString("cat", "the cat sat")
    fmt.Println(ok)
}

Компиляция шаблона

Если шаблон используется многократно, скомпилируйте его один раз с помощью regexp.Compile. Функция возвращает повторно используемый *regexp.Regexp и ошибку для недопустимых шаблонов.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re, err := regexp.Compile("[0-9]+")
    fmt.Println(re.MatchString("abc123"), err)
}

MustCompile для констант

regexp.MustCompile вызывает панику, если шаблон недопустим. Используйте его для фиксированных шаблонов, известных во время компиляции, обычно для переменных уровня пакета.

package main

import (
    "fmt"
    "regexp"
)

var digits = regexp.MustCompile("[0-9]+")

func main() {
    fmt.Println(digits.MatchString("order 42"))
}

Классы символов

Квадратные скобки задают множество допустимых символов. [aeiou] соответствует любой гласной, а диапазоны вроде [a-z] задают интервал символов.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[a-z]+")
    fmt.Println(re.MatchString("Hello"))
}

Предопределённые классы

Сокращения упрощают работу с распространёнными наборами: \d означает цифру, \w — символ слова, а \s — пробельный символ. В строках Go экранируйте обратную косую черту.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("\\d+")
    fmt.Println(re.MatchString("abc 99"))
}

Квантификаторы

Квантификаторы указывают количество повторений:

  • * — ноль или больше,
  • + — один или больше,
  • ? — ноль или один,
  • {2,4} — диапазон.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("a{2,3}")
    fmt.Println(re.MatchString("aaa"))
    fmt.Println(re.MatchString("a"))
}

Якоря

Якоря фиксируют положение совпадения: ^ означает начало текста, а $ — его конец. Используйте оба, чтобы требовать совпадения со всей строкой.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("^go$")
    fmt.Println(re.MatchString("go"))
    fmt.Println(re.MatchString("going"))
}

Чередование и группы

Вертикальная черта | означает OR, а круглые скобки объединяют части. (cat|dog)s? соответствует вариантам cat, cats, dog или dogs.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("(cat|dog)s?")
    fmt.Println(re.MatchString("dogs"))
}

Проверка формата

Якорные шаблоны позволяют создавать средства проверки. Здесь мы проверяем простой код в стиле ZIP, состоящий ровно из пяти цифр.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("^\\d{5}$")
    fmt.Println(re.MatchString("12345"))
    fmt.Println(re.MatchString("123"))
}

Сопоставление с байтами

Методы бывают в вариантах для строк и срезов байтов. Match работает с []byte, подобно MatchString.

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("[0-9]+")
    fmt.Println(re.Match([]byte("id7")))
}

Быстрая проверка

Какая функция вызывает панику при недопустимом шаблоне и лучше всего подходит для фиксированных шаблонов?

Повторение: основы регулярных выражений

Вы изучили основные понятия:

  • Быстро выполняйте сопоставление с помощью MatchString, а шаблоны компилируйте с помощью Compile или MustCompile.
  • Создавайте шаблоны из классов, квантификаторов, якорей и групп.
  • Используйте якоря ^ и $ для проверки всей строки.
package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile("^[a-z]+@[a-z]+$")
    fmt.Println(re.MatchString("hi@host"))
}
Можно начать бесплатно

Изучай Go с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
51
Уроки
203

Часто задаваемые вопросы

Урок «Основы regexp» бесплатный?

Да — полный текст урока «Основы regexp» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы regexp»?

Компилируйте и сопоставляйте шаблоны Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы regexp»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы regexp
  2. Поиск и извлечение
  3. Замена текста
  4. Советы по производительности
← Назад к Go Academy