Функция regexp.QuoteMeta
Функция regexp.QuoteMeta экранирует все метасимволы регулярных выражений в переданной строке и возвращает строку, которую можно безопасно использовать как литерал в шаблоне регулярного выражения. В первый параметр функция принимает строку для экранирования. Функция возвращает строку, в которой все специальные символы регулярных выражений заменены на их экранированные версии.
Метасимволы, которые экранирует функция: ., *, +, ?, (, ), [, ], {, }, ^, $, |, \. Это особенно полезно, когда нужно найти точное совпадение с подстрокой, которая может содержать специальные символы.
Синтаксис
regexp.QuoteMeta(str)
Пример
Давайте экранируем строку с метасимволами '.*+':
package main
import (
"fmt"
"regexp"
)
func main() {
str := ".*+"
res := regexp.QuoteMeta(str)
fmt.Println(res)
}
Результат выполнения кода:
"\.\*\+"
Пример
Давайте экранируем строку с символами '[abc]':
package main
import (
"fmt"
"regexp"
)
func main() {
str := "[abc]"
res := regexp.QuoteMeta(str)
fmt.Println(res)
}
Результат выполнения кода:
"\[abc\]"
Пример
Давайте экранируем строку со специальными символами '^$|':
package main
import (
"fmt"
"regexp"
)
func main() {
str := "^$|"
res := regexp.QuoteMeta(str)
fmt.Println(res)
}
Результат выполнения кода:
"\^\$\|"
Пример
Давайте используем экранированную строку в регулярном выражении для поиска точного совпадения:
package 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)
}
Результат выполнения кода:
"1.0.0-beta"
Смотрите также
-
функцию
regexp.Compile,
которая компилирует регулярное выражение для дальнейшего использования -
функцию
regexp.MustCompile,
которая компилирует регулярное выражение с паникой при ошибке -
функцию
regexp.MatchString,
которая проверяет соответствие строки регулярному выражению -
функцию
regexp.Regexp.FindString,
которая находит первое совпадение в строке