Метод regexp.Regexp.ReplaceAll

Метод regexp.Regexp.ReplaceAll заменяет все вхождения регулярного выражения в переданном байтовом срезе на строку замены. Первым параметром метод принимает байтовый срез []byte, в котором нужно выполнить замену, вторым параметром принимает байтовый срез []byte, на который нужно заменить все совпадения. Метод возвращает новый байтовый срез []byte с выполненными заменами. Исходный срез при этом не изменяется.

Синтаксис

gore.ReplaceAll(src, repl)

Простой пример замены

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

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\d`)
  src := []byte("a1b2c3d4e5")
  res := re.ReplaceAll(src, []byte("X"))
  fmt.Println(string(res))
}

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

go"aXbXcXdXeX"

Замена с использованием группы захвата

Давайте заменим дату в формате "YYYY-MM-DD" на формат "DD.MM.YYYY" с использованием групп захвата:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`(\d{4})-(\d{2})-(\d{2})`)
  src := []byte("today is 2026-09-04 and tomorrow is 2026-09-05")
  res := re.ReplaceAll(src, []byte("${3}.${2}.${1}"))
  fmt.Println(string(res))
}

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

go"today is 04.09.2026 and tomorrow is 05.09.2026"

Замена с удалением совпадений

Давайте удалим все гласные буквы из строки, заменив их на пустую строку:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`[aeiou]`)
  src := []byte("hello world example")
  res := re.ReplaceAll(src, []byte(""))
  fmt.Println(string(res))
}

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

go"hll wrld xmpl"

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

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