На этом шаге рассмотрим классы символов, поддерживаемые пакетом regexp, для работы со строками в Go.
В табл. 1 даны классы символов, поддерживаемые механизмом RE2.
| Последовательность | Описание |
|---|---|
| [символы] | Любой из перечисленных символов |
| [^символы] | Любой из неперечисленных символов |
| [:имя:] | Любой из ASCII-символов, входящий в класс с указанным именем:
[[:alnum:]] ≡ [0-9A-Za-z] [[:lower:]] ≡ [a-z] [[:alpha:]] ≡ [A-Za-z] [[:print:]] ≡ [ -~] [[:ascii:]] ≡ [\x00-\x7F] [[:punct:]] ≡ [!-/:-@[-`{-~] [[:blank:]] .≡ [ \t] [[:space:]] ≡ [ \t\n\v\f\r] [[:cntrl:]] ≡ [\x00-\x1F\x7F] [[:upper:]] ≡ [A-Z] [[:digit:]] ≡ [0-9] [[:word:]] ≡ [0-9A-Za-z] [[:graph:]] ≡ [!-~] [[:xdigit:]] ≡ [0-9A-Fa-z] |
| [:^имя:] | Любой из ASCII-символов, не входящий в класс с указанным именем |
| . | Любой символ (включая перевод строки, если установлен флаг s) |
| \d | Любая ASCII-цифра: [0-9] |
| \D | Любой ASCII-символ, не являющийся цифрой: [^0-9] |
| \s | Любой пробельный ASCII-символ: [\t\n\f\r] |
| \S | Любой ASCII-символ, не являющийся пробельным: [^\t\n\f\r] |
| \w | Любой ASCII-символ "слова": [0-9A-Za-z] |
| \W | Любой ASCII-символ, не являющийся символом "слова": [^0-9A-Za-z] |
| \pN | Любой символ Юникода, входящий в класс N с однобуквенным именем, например последовательности \pL соответствуют буквы Юникода |
| \PN | Любой символ Юникода, не входящий в класс N с однобуквенным именем, например последовательности \PL соответствуют символы Юникода, не являющиеся буквами |
| \p{Имя} | Любой символ Юникода, входящий в класс с именем Имя, например последовательности \p{Ll} соответствуют буквы нижнего регистра, последовательности \p{Lu} – буквы верхнего регистра, последовательности \p{Greek} – буквы греческого алфавита |
| \P{Имя} | Любой символ Юникода, не входящий в класс с именем Имя |
На следующем шаге рассмотрим проверки и квантификаторы, поддерживаемые пакетом regexp.