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

Метод regexp.Regexp.SubexpNames

Метод SubexpNames возвращает срез строк, содержащий имена всех подвыражений (capturing groups) регулярного выражения, в порядке их объявления. Первый элемент среза всегда является пустой строкой, так как он соответствует всему регулярному выражению. Если подвыражение не имеет имени, соответствующий элемент среза будет пустой строкой.

Синтаксис

regexp.SubexpNames() []string

Пример

Давайте получим имена подвыражений для регулярного выражения с именованными группами:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})`) names := re.SubexpNames() fmt.Println(names) }

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

["" year month day]

Как видим, первый элемент среза пустой, а остальные содержат имена подвыражений.

Пример

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

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(a)(?P<second>b)(c)`) names := re.SubexpNames() fmt.Println(names) }

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

["" second ]

В данном примере первое и третье подвыражения не имеют имени, поэтому соответствующие элементы среза пустые. Только второе подвыражение имеет имя "second".

Пример

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

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(?P<first>[a-z]+)-(?P<second>\d+)`) text := "abc-123" matches := re.FindStringSubmatch(text) names := re.SubexpNames() for i, match := range matches { if names[i] != "" { fmt.Printf("%s: %s\n", names[i], match) } } }

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

"first: abc" "second: 123"

В этом примере мы получаем срез совпадений и срез имен, затем сопоставляем их, чтобы вывести значения только для именованных групп.

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

  • метод regexp.Regexp.SubexpIndex,
    который возвращает индекс подвыражения по его имени
  • метод regexp.Regexp.NumSubexp,
    который возвращает количество подвыражений в регулярном выражении
  • метод regexp.Regexp.FindStringSubmatch,
    который возвращает срез совпадений для подвыражений
  • функцию regexp.MustCompile,
    которая компилирует регулярное выражение и вызывает панику в случае ошибки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить