Wenn Sie versuchen, UTF8-konforme Multibyte-Zeichen zu grab/grep, verwenden Sie dieses :
( [\302-\337][\200-\277]|
[\340][\240-\277][\200-\277]|
[\355][\200-\237][\200-\277]|
[\341-\354\356-\357][\200-\277][\200-\277]|
[\360][\220-\277][\200-\277][\200-\277]|
[\361-\363][\200-\277][\200-\277][\200-\277]|
[\364][\200-\217][\200-\277][\200-\277] )
* please delete all newlines, spaces, or tabs in between (..)
* feel free to use bracket ranges {1,3} etc to optimize
the redundant listings of [\200-\277]. but don't change that
[\200-\277]+, as that might result in invalid encodings
due to either insufficient or too many continuation bytes
* although some historical UTF-8 references considers 5- and
6-byte encodings to be valid, as of Unicode 13 they only
consider up to 4-bytes
Ich habe diese Zeichenkette sogar mit zufälligen Binärdateien getestet, und sie meldete die gleiche Anzahl von Multibyte-Zeichen wie gnu-wc.
Hinzufügen einer weiteren [\000-\177]|
an der Front kurz nach (
wenn Sie eine vollständige UTF8-Zeichenkette benötigen.
Diese Regex ist wirklich hässlich, ja, aber sie ist auch POSIX-konform, sprach- und plattformübergreifend kompatibel (hängt nicht von einer speziellen Regex-Notation ab, (sollte) vollständig UTF-8-konform sein (Unicode 13) und ist völlig unabhängig vom Locale-Setting.
wenn Sie grep damit ausführen, verwenden Sie bitte grep -P
Wenn Sie nur die anderen Bytes benötigen, dann haben andere bereits vorgeschlagen.
wenn Sie die 11.172 Zeichen des NFC-komponierten koreanischen Hangul benötigen, ist es
(([\352][\260-\277]|[\353\354][\200-\277]|
[\355][\200-\235])[\200-\277]|[\355][\236][\200-\243])
und wenn Sie japanische Hiragana+Katakana brauchen, ist es
([\343]([\201-\203][\200-\277]|[\207][\260-\277]))