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

Метод regexp.Regexp.FindStringSubmatch

Метод FindStringSubmatch выполняет поиск первого совпадения с регулярным выражением в строке. Он возвращает срез строк, где первый элемент — это полное совпадение, а последующие элементы — это подстроки, захваченные группами (вложенными скобками) в регулярном выражении. Если совпадений нет, метод возвращает nil. В качестве первого параметра метод принимает строку для поиска.

Синтаксис

re.FindStringSubmatch(s)

Пример

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

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(\d)(\d)(\d)`) res := re.FindStringSubmatch("12345") fmt.Println(res) }

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

[123 1 2 3]

В полученном срезе: первый элемент — полное совпадение "123", далее элементы для каждой группы: "1", "2" и "3".

Пример

Теперь давайте проверим, что метод возвращает nil, если совпадение не найдено:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`\d{3}`) res := re.FindStringSubmatch("abcde") fmt.Println(res) }

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

[]

Вывод пустого среза означает, что совпадений не найдено.

Пример

Используем именованные группы для улучшения читаемости кода. Обратите внимание, что даже при использовании именованных групп, в результат сначала записывается полное совпадение, а затем значения групп в порядке их объявления:

package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(?P<first>\d)(?P<second>\d)`) res := re.FindStringSubmatch("12345") fmt.Println(res) }

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

[12 1 2]

Здесь полное совпадение — "12", затем значения групп "first" и "second""1" и "2".

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

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