РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
448 of 1593 menu

Метод regexp.Regexp.ExpandString

Метод ExpandString расширяет переданную строку-шаблон, заменяя в ней специальные конструкции вида $name или ${name} на соответствующие значения из найденного совпадения. Первым параметром метод принимает слайс байт для записи результата, вторым - строку шаблона, третьим - строку с исходным текстом, четвертым - найденное совпадение в виде слайса байт.

Синтаксис

re.ExpandString(dst []byte, template string, src string, match []int)

Пример

Давайте используем метод ExpandString для замены $name на подстроку, найденную по регулярному выражению:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`Hello, (\w+)!`) src := "Hello, Go!" match := re.FindStringSubmatchIndex(src) if match != nil { dst := []byte("Greeting: $name") res := re.ExpandString(dst, "Greeting: $name", src, match) fmt.Println(string(res)) } }

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

"Greeting: Go"

Пример

Давайте используем метод ExpandString с нумерацией групп для вставки нескольких значений:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(\w+), (\w+)!`) src := "Hello, Go!" match := re.FindStringSubmatchIndex(src) if match != nil { dst := []byte("") res := re.ExpandString(dst, "First: $1, Second: $2", src, match) fmt.Println(string(res)) } }

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

"First: Hello, Second: Go"

Пример

Давайте используем метод ExpandString с именованными группами для более читаемого шаблона:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(?P<greeting>\w+), (?P<name>\w+)!`) src := "Hello, Go!" match := re.FindStringSubmatchIndex(src) if match != nil { dst := []byte("") res := re.ExpandString(dst, "${greeting} to ${name}", src, match) fmt.Println(string(res)) } }

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

"Hello to Go"

Пример

Давайте используем метод ExpandString с комбинацией обычного текста и специальных конструкций:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(\d{4})-(\d{2})-(\d{2})`) src := "2026-09-04" match := re.FindStringSubmatchIndex(src) if match != nil { dst := []byte("") res := re.ExpandString(dst, "Year: $1, Month: $2, Day: $3", src, match) fmt.Println(string(res)) } }

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

"Year: 2026, Month: 09, Day: 04"

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

  • метод Regexp.Expand,
    который работает с байтовыми срезами вместо строк
  • метод Regexp.FindStringSubmatchIndex,
    который возвращает индексы совпадений для строк
  • метод Regexp.SubexpNames,
    который возвращает имена захваченных групп
  • метод Regexp.ReplaceAllString,
    который заменяет все совпадения на строку
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить