ユーザーが任意の言語で任意のテキストを入力できるテキスト ボックスがあり、そのテキストを単語に分割して、それらの単語を hunspell スペル チェックに渡すことができるようにする必要があります。分割には、単語の区切り記号に一致する正規表現を使用します。
最初は\W、テキストを単語に分割するための単語区切りとして使用していましたが、それは英語などのラテン文字でしか機能しません。ラテン語以外の言語を使用すると、すべての文字が として扱われ\Wます。これ\Wは、 が である任意の文字として定義されているためです[^a-zA-Z0-9_]。
これまでのところ、(?![-'])[\pP|\pZ|\pC]英語、スペイン語、ロシア語を正しくトークン化しているようです。基本的に、すべての句読点文字 (ハイフンとアポストロフィを除く)、すべての区切り文字、およびすべての「その他の」文字 (制御、私的使用など) を単語の区切り文字として扱うように指示します。ハイフンとアポストロフィは通常、単語の区切り記号として扱われるべきではないため、除外しました。
私はそれをあまりテストしていませんが、今日思いついたので、多言語テキストで単語区切り文字を一致させるのにより適した正規表現を誰かが知っているかどうか尋ねるのが賢明だと思いました.
日本語、中国語、タイ語など、トークン化できない言語には関心がないことに注意してください。
更新:人々が私が使用している言語を尋ねてきたので (おそらくそれほど重要ではないはずですが)、私は C++ と Qt5 のQRegularExpressionクラスを使用しています。