- regex[meta header]
- std[meta namespace]
- regex_traits[meta class]
- function template[meta id-type]
- cpp11[meta cpp]
template <class ForwardIterator>
char_class_type lookup_classname(ForwardIterator first,
ForwardIterator last,
bool icase = false) const;与えられた文字の範囲に対応するクラス名を取得する。
文字の範囲[first, last)からなるクラス名文字列に対応する、未規定のクラス値を返す。
パラメータicaseがtrueである場合は、大文字・小文字を無視してクラス名の比較が行われる。
与えられたクラス名に対応する値がない場合、char_class_type()を返す。
regex_traits<char>とregex_traits<wchar_t>に対しては、少なくても以下のクラス名は許可される:
| クラス名 | クラスを表すビットマスク値 | 説明 |
|---|---|---|
"alnum"/L"alnum" |
ctype_base::alnum |
英字・数字にマッチする |
"alpha"/L"alpha" |
ctype_base::alpha |
英字にマッチする |
"blank"/L"blank" |
ctype_base::blank |
ブランク文字にマッチする |
"cntrl"/L"cntrl" |
ctype_base::cntrl |
制御文字にマッチする |
"digit"/L"digit" |
ctype_base::digit |
数字にマッチする |
"d"/L"d" |
ctype_base::digit |
数字にマッチする |
"graph"/L"graph" |
ctype_base::graph |
図形文字にマッチする |
"lower"/L"lower" |
ctype_base::lower |
英小文字にマッチする |
"print"/L"print" |
ctype_base::print |
印字可能文字にマッチする |
"punct"/L"punct" |
ctype_base::punct |
区切り文字にマッチする |
"space"/L"space" |
ctype_base::space |
空白類文字にマッチする |
"s"/L"s" |
ctype_base::space |
空白類文字にマッチする |
"upper"/L"upper" |
ctype_base::upper |
英大文字にマッチする |
"w"/L"w" |
ctype_base::alnum |
英字・数字にマッチする |
"xdigit"/L"xdigit" |
ctype_base::xdigit |
十六進数字にマッチする |
#include <iostream>
#include <regex>
#include <string>
int main()
{
std::regex_traits<char> traits;
std::string class_name = "alnum"; // 正規表現中で[[:alnum:]]のように入力するクラス名
// 文字'a'がアルファベットと数字のクラスに含まれているかを判定する
std::regex_traits<char>::char_class_type class_value =
traits.lookup_classname(class_name.begin(), class_name.end());
if (traits.isctype('a', class_value)) {
std::cout << "'a' is alpha-numeric class" << std::endl;
}
else {
std::cout << "'a' is not alpha-numeric class" << std::endl;
}
}- lookup_classname[color ff0000]
- class_name.begin()[link /reference/string/basic_string/begin.md]
- class_name.end()[link /reference/string/basic_string/end.md]
- isctype[link isctype.md]
'a' is alpha-numeric class
- C++11
- Clang: 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6
- GCC: 4.9.0, 4.9.1, 4.9.2, 5.0.0
- ICC: ??
- Visual C++: ??
- LWG Issue 2018. [CD]
regex_traits::isctypeReturns clause is wrong- C++14から、戻り値の仕様文面が見直された。