std::regex_traits<CharT>:: lookup_classname
|
template
<
class
ForwardIt
>
char_class_type lookup_classname
(
ForwardIt first,
|
||
Wenn die Zeichenfolge
[
first
,
last
)
den Namen einer gültigen Zeichenklasse in der aktuell eingestellten Locale darstellt (das heißt, die Zeichenkette zwischen
[:
und
:]
in regulären Ausdrücken), gibt den implementierungsdefinierten Wert zurück, der diese Zeichenklasse repräsentiert. Andernfalls wird Null zurückgegeben.
Wenn der Parameter
icase
auf
true
gesetzt ist, ignoriert die Zeichenklasse die Groß-/Kleinschreibung, z.B. erzeugt der Regex
[:lower:]
mit
std::regex_constants::icase
einen Aufruf von
std::
regex_traits
<>
::
lookup_classname
(
)
mit
[
first
,
last
)
, die den String
"lower"
anzeigt, und
icase
==
true
. Dieser Aufruf liefert die gleiche Bitmaske zurück wie der Aufruf, der durch den Regex
[:alpha:]
mit
icase
==
false
erzeugt wird.
Die folgenden schmalen und breiten Zeichenklassennamen werden stets erkannt von std:: regex_traits < char > und std:: regex_traits < wchar_t > entsprechend, und die zurückgegebenen Klassifizierungen (mit icase == false ) entsprechen den übereinstimmenden Klassifizierungen, die durch die std::ctype Facette des eingebundenen Locale erhalten werden, wie folgt:
| Zeichenklassenname | std::ctype Klassifizierung | |
|---|---|---|
| Schmal | Breit | |
| "alnum" | L "alnum" | std::ctype_base::alnum |
| "alpha" | L "alpha" | std::ctype_base::alpha |
| "blank" | L "blank" | std::ctype_base::blank |
| "cntrl" | L "cntrl" | std::ctype_base::cntrl |
| "digit" | L "digit" | std::ctype_base::digit |
| "graph" | L "graph" | std::ctype_base::graph |
| "lower" | L "lower" | std::ctype_base::lower |
| "print" | L "print" | std::ctype_base::print |
| "punct" | L "punct" | std::ctype_base::punct |
| "space" | L "space" | std::ctype_base::space |
| "upper" | L "upper" | std::ctype_base::upper |
| "xdigit" | L "xdigit" | std::ctype_base::xdigit |
| "d" | L "d" | std::ctype_base::digit |
| "s" | L "s" | std::ctype_base::space |
| "w" | L "w" |
std::ctype_base::alnum
mit optional hinzugefügtem '_' |
Die für die Zeichenkette zurückgegebene Klassifizierung "w" kann exakt dieselbe sein wie "alnum" , in welchem Fall isctype() explizit '_' hinzufügt.
Zusätzliche Klassifikationen wie "jdigit" oder "jkanji" können von systemseitig bereitgestellten Locales bereitgestellt werden (in diesem Fall sind sie auch über std::wctype zugänglich).
Inhaltsverzeichnis |
Parameter
| first, last | - | ein Iteratorpaar, das die Zeichenfolge bestimmt, die einen Namen einer Zeichenklasse darstellt |
| icase | - | falls true , ignoriert die Groß-/Kleinschreibung in der Zeichenklassifizierung |
| Typanforderungen | ||
-
ForwardIt
muss die Anforderungen von
LegacyForwardIterator
erfüllen.
|
||
Rückgabewert
Die Bitmaske, die die Zeichenklassifizierung darstellt, bestimmt durch die gegebene Zeichenklasse, oder char_class_type ( ) falls die Klasse unbekannt ist.
Beispiel
Demonstriert eine benutzerdefinierte Regex-Traits-Implementierung von
lookup_classname()
/
isctype()
:
#include <cwctype> #include <iostream> #include <locale> #include <regex> // This custom regex traits uses wctype/iswctype to implement lookup_classname/isctype. struct wctype_traits : std::regex_traits<wchar_t> { using char_class_type = std::wctype_t; template<class It> char_class_type lookup_classname(It first, It last, bool = false) const { return std::wctype(std::string(first, last).c_str()); } bool isctype(wchar_t c, char_class_type f) const { return std::iswctype(c, f); } }; int main() { std::locale::global(std::locale("ja_JP.utf8")); std::wcout.sync_with_stdio(false); std::wcout.imbue(std::locale()); std::wsmatch m; std::wstring in = L"風の谷のナウシカ"; // matches all characters (they are classified as alnum) std::regex_search(in, m, std::wregex(L"([[:alnum:]]+)")); std::wcout << "alnums: " << m[1] << '\n'; // prints "風の谷のナウシカ" // matches only the katakana std::regex_search(in, m, std::basic_regex<wchar_t, wctype_traits>(L"([[:jkata:]]+)")); std::wcout << "katakana: " << m[1] << '\n'; // prints "ナウシカ" }
Ausgabe:
alnums: 風の谷のナウシカ katakana: ナウシカ
Siehe auch
|
zeigt die Zugehörigkeit zu einer Zeichenklasse an
(öffentliche Mitgliedsfunktion) |
|
|
sucht eine Zeichenklassifizierungskategorie in der aktuellen C-Lokalisierung
(Funktion) |