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

regexp.Regexp.Expand

Метод Expand применяется к объекту Regexp и выполняет подстановку шаблона, заменяя специальные конструкции вида $name или ${name} на соответствующие значения из результатов поиска. В первый параметр передается слайс байт, в который будет записан результат (обычно используется nil для создания нового). Второй параметр - шаблон для подстановки. Третий параметр - исходный текст в виде слайса байт. Четвертый параметр - слайс байт, содержащий подстроки, найденные при помощи метода FindSubmatch или подобных.

Синтаксис

re.Expand(dst, template, src, match)

Пример

Давайте найдем подстроку, соответствующую регулярному выражению, и подставим ее в шаблон:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(\w+)=(\w+)`) src := []byte("key=value") match := re.FindSubmatch(src) template := []byte("matched: $1 -> $2") res := re.Expand(nil, template, src, match) fmt.Println(string(res)) }

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

"matched: key -> value"

Пример

Используем конструкцию ${name} для подстановки значения с указанием имени группы:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(?P<first>\w+)=(?P<second>\w+)`) src := []byte("user=admin") match := re.FindSubmatch(src) template := []byte("${first} is ${second}") res := re.Expand(nil, template, src, match) fmt.Println(string(res)) }

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

"user is admin"

Пример

Используем существующий буфер для записи результата, чтобы избежать выделения новой памяти:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(\d{2}):(\d{2})`) src := []byte("time: 12:34") match := re.FindSubmatch(src) template := []byte("hours: $1, minutes: $2") dst := make([]byte, 0, 50) dst = re.Expand(dst, template, src, match) fmt.Println(string(dst)) }

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

"hours: 12, minutes: 34"

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

  • метод ExpandString,
    который работает со строковыми данными вместо байтовых слайсов
  • метод ReplaceAll,
    который выполняет замену по регулярному выражению
  • метод ReplaceAllString,
    который заменяет все вхождения строки по шаблону
  • метод FindSubmatch,
    который возвращает слайс найденных подстрок для использования с Expand
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить