regexp.Regexp.ReplaceAllLiteral
Метод regexp.Regexp.ReplaceAllLiteral выполняет замену всех найденных совпадений с регулярным выражением на указанную литеральную строку. Первым параметром метод принимает исходный байтовый срез []byte, в котором производится поиск. Вторым параметром передается байтовый срез []byte с литеральной строкой замены. В отличие от метода ReplaceAll, метод ReplaceAllLiteral не интерпретирует специальные последовательности в строке замены, такие как $1 или $name, и вставляет их как обычные символы. Метод возвращает новый байтовый срез []byte с выполненными заменами, оставляя исходный срез неизменным.
Синтаксис
re.ReplaceAllLiteral(src, repl []byte) []byte
Пример
Давайте заменим все цифры в строке на литеральную строку '[digit]':
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\d+`)
src := []byte("abc123def456ghi")
res := re.ReplaceAllLiteral(src, []byte("[digit]"))
fmt.Println(string(res))
}
Результат выполнения кода:
"abc[digit]def[digit]ghi"
Пример
Давайте посмотрим, как метод ReplaceAllLiteral отличается от ReplaceAll при использовании шаблонов подстановки:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`(\d+)-(\d+)`)
src := []byte("12-34")
resLiteral := re.ReplaceAllLiteral(src, []byte("$1-$2"))
resAll := re.ReplaceAll(src, []byte("$1-$2"))
fmt.Printf("ReplaceAllLiteral: %s\n", resLiteral)
fmt.Printf("ReplaceAll: %s\n", resAll)
}
Результат выполнения кода:
"ReplaceAllLiteral: $1-$2"
"ReplaceAll: 12-34"
Пример
Давайте заменим все email адреса в строке на литеральную строку '[email]':
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\w+@\w+\.\w+`)
src := []byte("Contact: user@example.com and admin@test.org")
res := re.ReplaceAllLiteral(src, []byte("[email]"))
fmt.Println(string(res))
}
Результат выполнения кода:
"Contact: [email] and [email]"
Смотрите также
-
метод
regexp.Regexp.ReplaceAllLiteralString,
который выполняет замену в строке -
метод
regexp.Regexp.ReplaceAll,
который выполняет замену с поддержкой шаблонов -
метод
regexp.Regexp.ReplaceAllString,
который выполняет замену в строке с поддержкой шаблонов -
функцию
regexp.MustCompile,
которая компилирует регулярное выражение с паникой при ошибке