Как написать регулярку с переменной внутри?

В Go есть библиотека regexp, которую можно использовать для работы с регулярными выражениями. Она предоставляет функцию regexp.Compile, которая компилирует регулярное выражение и возвращает объект *regexp.Regexp, представляющий скомпилированное выражение.

Чтобы включить переменную внутри регулярного выражения, вы можете использовать функцию regexp.QuoteMeta для экранирования специальных символов, чтобы они не воспринимались как часть регулярного выражения. Затем вы можете объединить экранированную переменную с другими частями регулярного выражения.

Вот пример кода, демонстрирующий, как написать регулярное выражение с переменной внутри:

import (
    "fmt"
    "regexp"
)

func main() {
    // Переменная, которую мы хотим включить в регулярное выражение
    email := "[email protected]"

    // Экранируем переменную
    escapedEmail := regexp.QuoteMeta(email)

    // Составляем регулярное выражение с переменной
    regex := fmt.Sprintf("^%s$", escapedEmail)

    // Компилируем регулярное выражение
    pattern, err := regexp.Compile(regex)
    if err != nil {
        panic(err)
    }

    // Тестирование регулярного выражения
    testEmail := "[email protected]"
    if pattern.MatchString(testEmail) {
        fmt.Println("Email совпадает с регулярным выражением")
    } else {
        fmt.Println("Email не совпадает с регулярным выражением")
    }
}

В этом примере мы используем переменную email для создания регулярного выражения, проверяющего, что весь входной текст совпадает с email-адресом. Сначала мы экранируем переменную с помощью функции regexp.QuoteMeta. Затем мы объединяем экранированную переменную с другими частями регулярного выражения и компилируем его с помощью regexp.Compile. Наконец, мы тестируем регулярное выражение на соответствие с помощью метода MatchString объекта *regexp.Regexp.

Таким образом, вы можете использовать этот подход, чтобы создать регулярное выражение с переменной внутри в Go.