std::regex_traits<CharT>::lookup_collatename
From cppreference.com
< cpp | regex | regex traits
| template< class ForwardIt > string_type lookup_collatename( ForwardIt first, ForwardIt last ) const; |
||
現在のロケールに埋め込まれた照合要素名として、文字シーケンス [first, last) が有効な場合、その照合要素名を返します。それ以外の場合は、空文字列を返します。
照合要素とは、POSIX正規表現において [. と .] の間にある記号のことです。例えば、Cロケールでは [.a.] は文字 a にマッチします。Cロケールでは [.tilde.] も文字 ~ にマッチします。チェコ語ロケールでは [.ch.] は二重音字 ch にマッチしますが、ほとんどの他のロケールでは std::regex_error をエラーコード std::regex_constants::error_collate で生成します。
[編集] パラメータ
| first, last | - | 照合要素名を表現する文字シーケンスを決定するイテレータのペア |
| 型要件 | ||
-ForwardIt は LegacyForwardIterator の要件を満たさなければなりません。 | ||
[編集] 戻り値
名前付き照合要素の文字列表現。
[編集] 例
このコードを実行
#include <iostream> #include <regex> #include <string> struct noisy_traits : std::regex_traits<char> { template<class Iter> string_type lookup_collatename(Iter first, Iter last) const { string_type result = regex_traits::lookup_collatename(first, last); std::cout << "regex_traits<>::lookup_collatename(\"" << string_type(first, last) << "\") returns \"" << result << "\"\n"; return result; } }; int main() { std::string str = "z|}a"; // C locale collation order: x,y,z,{,|,},~ std::basic_regex<char, noisy_traits> re("[x-[.tilde.]]*a", std::regex::basic); std::cout << std::boolalpha << std::regex_match(str, re) << '\n'; }
実行結果の例
regex_traits<>::lookup_collatename("tilde") returns "~"
true