regexp.Regexp.ReplaceAllLiteralString

Метод Regexp.ReplaceAllLiteralString выполняет замену всех найденных совпадений с регулярным выражением на строку замены. В отличие от метода ReplaceAllString, данный метод не интерпретирует специальные конструкции в строке замены, такие как $1 или ${name}. Это означает, что строка замены вставляется буквально, без каких-либо подстановок из найденного совпадения. Первым параметром метод принимает исходную строку, вторым - строку замены, которая будет вставлена вместо каждого совпадения.

Синтаксис

gore.ReplaceAllLiteralString(src, repl)

Пример

Давайте заменим все цифры в строке на символ '#':

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\d`)
  src := "a1b2c3d4e5"
  res := re.ReplaceAllLiteralString(src, "#")
  fmt.Println(res)
}

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

go"a#b#c#d#e#"

Пример

Давайте заменим все слова на строку 'TEXT':

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`[a-z]+`)
  src := "hello world from go"
  res := re.ReplaceAllLiteralString(src, "TEXT")
  fmt.Println(res)
}

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

go"TEXT TEXT TEXT TEXT"

Пример

Важное отличие от ReplaceAllString - отсутствие интерпретации шаблонов замены:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`(\w+)@(\w+)\.(\w+)`)
  src := "contact: user@example.com"
  
  // ReplaceAllLiteralString не интерпретирует $1, $2, $3
  resLiteral := re.ReplaceAllLiteralString(src, "$1 at $2 dot $3")
  
  // ReplaceAllString интерпретирует шаблоны
  resString := re.ReplaceAllString(src, "$1 at $2 dot $3")
  
  fmt.Println("Literal:", resLiteral)
  fmt.Println("String: ", resString)
}

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

go"Literal: $1 at $2 dot $3"
"String:  user at example dot com"

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

  • метод Regexp.ReplaceAllString,
    который выполняет замену с интерпретацией шаблонов
  • метод Regexp.ReplaceAllLiteral,
    который делает то же самое, но работает с байтовыми срезами
  • метод Regexp.ReplaceAll,
    который выполняет замену с интерпретацией для байтовых срезов
  • метод Regexp.ReplaceAllFunc,
    который позволяет использовать функцию для генерации строки замены