cpp

Регулярные выражения. Проверка соответствия шаблону

Выполнить проверку соответствия шаблону можно с помощью следующих методов:

  • MatchString() — возвращает значение true, если строка соответствует шаблону, и значение false — в противном случае. Формат метода:
(*regexp.Regexp).MatchString(s string) bool

Пример проверки полного соответствия шаблону (указаны привязки к началу и концу строки):

re := regexp.MustCompile(`^[0-9]+$`)
if re.MatchString("20") {
   fmt.Println("Строка соответствует шаблону")
} else {
   fmt.Println("Не соответствует")
}

Вместо метода MatchString() можно воспользоваться функцией MatchString(). Формат функции:

regexp.MatchString(pattern string,
                   s string) (matched bool, err error)

В первом параметре указывается шаблон регулярного выражения в виде строки, а во втором параметре — строка, внутри которой выполняется поиск. Функция возвращает два значения. Первое значение содержит true, если строка соответствует шаблону, и false — в противном случае. Через второе возвращаемое значение доступно описание ошибки или значение nil при отсутствии ошибки. Пример:

fmt.Println(regexp.MatchString(`^[0-9]+$`, "20"))
// true <nil>
fmt.Println(regexp.MatchString(`^[0-9]+$`, "20str"))
// false <nil>
fmt.Println(regexp.MatchString(`[0-9]+(`, "20"))
// false error parsing regexp: missing closing ): `[0-9]+(`
  • Match() — возвращает значение true, если байтовый слайс соответствует шаблону, и значение false — в противном случае. Формат метода:
(*regexp.Regexp).Match(b []byte) bool

Пример:

re := regexp.MustCompile(`^[0-9]+$`)
fmt.Println(re.Match([]byte("20")))    // true
fmt.Println(re.Match([]byte("20str"))) // false

Вместо метода Match() можно воспользоваться функцией Match(). Формат функции:

regexp.Match(pattern string, b []byte) (matched bool, err error)

В первом параметре указывается шаблон регулярного выражения в виде строки, а во втором параметре — байтовый слайс, внутри которого выполняется поиск. Функция возвращает два значения. Первое значение содержит true, если слайс соответствует шаблону, и false — в противном случае. Через второе возвращаемое значение доступно описание ошибки или значение nil при отсутствии ошибки. Пример:

fmt.Println(regexp.Match(`^[0-9]+$`, []byte("20")))
// true <nil>
fmt.Println(regexp.Match(`^[0-9]+$`, []byte("20str")))
// false <nil>
fmt.Println(regexp.Match(`[0-9]+(`, []byte("20")))
// false error parsing regexp: missing closing ): `[0-9]+(`
  • MatchReader() — возвращает значение true, если r соответствует шаблону, и значение false — в противном случае. Формат метода:
(*regexp.Regexp).MatchReader(r io.RuneReader) bool

Пример:

re := regexp.MustCompile(`^[0-9]+$`)
fmt.Println(re.MatchReader(strings.NewReader("20")))    // true
fmt.Println(re.MatchReader(strings.NewReader("20str"))) // false

Вместо метода MatchReader() можно воспользоваться функцией MatchReader(). Формат функции:

regexp.MatchReader(pattern string,
                   r io.RuneReader) (matched bool, err error)

В первом параметре указывается шаблон регулярного выражения в виде строки, а во втором параметре — объект, внутри которого выполняется поиск. Функция возвращает два значения. Первое значение содержит true, если r соответствует шаблону, и false — в противном случае. Через второе возвращаемое значение доступно описание ошибки или значение nil при отсутствии ошибки. Пример:

fmt.Println(regexp.MatchReader(`^[0-9]+$`,
            strings.NewReader("20")))    // true <nil>
fmt.Println(regexp.MatchReader(`^[0-9]+$`,
            strings.NewReader("20str"))) // false <nil>
fmt.Println(regexp.MatchReader(`[0-9]+(`,
            strings.NewReader("20")))
// false error parsing regexp: missing closing ): `[0-9]+(`

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp