Метод regexp.Regexp.ReplaceAll
Метод regexp.Regexp.ReplaceAll заменяет все вхождения регулярного выражения
в переданном байтовом срезе на строку замены. Первым параметром метод принимает
байтовый срез []byte, в котором нужно выполнить замену, вторым параметром
принимает байтовый срез []byte, на который нужно заменить все совпадения.
Метод возвращает новый байтовый срез []byte с выполненными заменами.
Исходный срез при этом не изменяется.
Синтаксис
re.ReplaceAll(src, repl)
Простой пример замены
Давайте заменим все цифры в строке на символ 'X':
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\d`)
src := []byte("a1b2c3d4e5")
res := re.ReplaceAll(src, []byte("X"))
fmt.Println(string(res))
}
Результат выполнения кода:
"aXbXcXdXeX"
Замена с использованием группы захвата
Давайте заменим дату в формате "YYYY-MM-DD" на формат "DD.MM.YYYY" с использованием групп захвата:
package 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))
}
Результат выполнения кода:
"today is 04.09.2026 and tomorrow is 05.09.2026"
Замена с удалением совпадений
Давайте удалим все гласные буквы из строки, заменив их на пустую строку:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`[aeiou]`)
src := []byte("hello world example")
res := re.ReplaceAll(src, []byte(""))
fmt.Println(string(res))
}
Результат выполнения кода:
"hll wrld xmpl"
Смотрите также
-
метод
regexp.Regexp.ReplaceAllString,
который выполняет замену для строкового типа -
метод
regexp.Regexp.ReplaceAllLiteral,
который выполняет замену без обработки групп захвата -
метод
regexp.Regexp.ReplaceAllFunc,
который позволяет динамически вычислять строку замены -
функцию
regexp.MustCompile,
которая компилирует регулярное выражение с паникой при ошибке