Метод regexp.Regexp.NumSubexp

Метод NumSubexp возвращает общее количество подвыражений (захватывающих групп) в скомпилированном регулярном выражении. Подвыражениями считаются группы, заключенные в круглые скобки () в шаблоне. Метод не принимает никаких параметров и возвращает значение типа int. Важно отметить, что счетчик включает как именованные, так и неименованные группы. Нулевое подвыражение (все совпадение целиком) не учитывается.

Синтаксис

gore.NumSubexp()

Пример

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

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`(\d{3})-(\d{2})`)
  res := re.NumSubexp()
  fmt.Println(res)
}

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

go2

Пример

Рассмотрим регулярное выражение без захватывающих групп:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`\d+`)
  res := re.NumSubexp()
  fmt.Println(res)
}

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

go0

Пример

Проверим работу метода с именованными группами и вложенными подвыражениями:

gopackage main

import (
  "fmt"
  "regexp"
)

func main() {
  re := regexp.MustCompile(`(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})`)
  res := re.NumSubexp()
  fmt.Println(res)
}

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

go3

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

  • метод SubexpNames,
    который возвращает имена всех подвыражений
  • метод SubexpIndex,
    который возвращает индекс подвыражения по его имени
  • функцию Compile,
    которая компилирует регулярное выражение
  • функцию MustCompile,
    которая компилирует регулярное выражение с паникой при ошибке