Функция regexp.QuoteMeta

Функция regexp.QuoteMeta экранирует все метасимволы регулярных выражений в переданной строке и возвращает строку, которую можно безопасно использовать как литерал в шаблоне регулярного выражения. В первый параметр функция принимает строку для экранирования. Функция возвращает строку, в которой все специальные символы регулярных выражений заменены на их экранированные версии.

Метасимволы, которые экранирует функция: ., *, +, ?, (, ), [, ], {, }, ^, $, |, \. Это особенно полезно, когда нужно найти точное совпадение с подстрокой, которая может содержать специальные символы.

Синтаксис

goregexp.QuoteMeta(str)

Пример

Давайте экранируем строку с метасимволами '.*+':

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  str := ".*+"
  res := regexp.QuoteMeta(str)
  fmt.Println(res)
}

Результат выполнения кода:

go"\.\*\+"

Пример

Давайте экранируем строку с символами '[abc]':

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  str := "[abc]"
  res := regexp.QuoteMeta(str)
  fmt.Println(res)
}

Результат выполнения кода:

go"\[abc\]"

Пример

Давайте экранируем строку со специальными символами '^$|':

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  str := "^$|"
  res := regexp.QuoteMeta(str)
  fmt.Println(res)
}

Результат выполнения кода:

go"\^\$\|"

Пример

Давайте используем экранированную строку в регулярном выражении для поиска точного совпадения:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  text := "version 1.0.0-beta"
  pattern := regexp.QuoteMeta("1.0.0-beta")
  re := regexp.MustCompile(pattern)
  res := re.FindString(text)
  fmt.Println(res)
}

Результат выполнения кода:

go"1.0.0-beta"

Смотрите также

  • функцию regexp.Compile,
    которая компилирует регулярное выражение для дальнейшего использования
  • функцию regexp.MustCompile,
    которая компилирует регулярное выражение с паникой при ошибке
  • функцию regexp.MatchString,
    которая проверяет соответствие строки регулярному выражению
  • функцию regexp.Regexp.FindString,
    которая находит первое совпадение в строке