0

ユーザーからの入力に基づいて正規表現を使用してテキストを検索するアプリケーションに取り組んでいます。ユーザーが持つ 1 つのオプションは、アスタリスクを使用して「0 個以上の文字に一致」ワイルドカードを含めることです。これは、単語の境界間でのみ一致する必要があります。私の最初の試みは、すべてのアスタリスクを に変換する(?:(?=\B).)*ことでした。これは、ほとんどの場合にうまく機能します。失敗するのは、どうやら.Netが分音符号のあるUnicode文字と別の文字の間の位置を単語区切りと見なしていることです。これはバグであると考えており、Microsoft フィードバック サイトに送信しました。

ただし、それまでの間、機能を実装して製品を出荷する必要があります。代替テキストとしての使用を検討し[\p{L}\p{M}\p{N}\p{Pc}]*ていますが、率直に言って「これが何をするのかよく分からない」状態です。つまり、仕様を読むことはできますが、これを十分にテストして、期待どおりに動作していることを確認できる自信はありません。テストする境界条件をすべて知っているわけではありません。アプリケーションは異文化間の労働者によって使用され、その多くは部族の場所にいるため、ゼロ幅の単語区切りを使用するものを含め、ありとあらゆる書記体系をサポートする必要があります。

誰かがより洗練された解決策を持っているか、上記のコードを確認/修正できますか、またはいくつかの指針を提供できますか?

ご協力いただきありがとうございます。

4

1 に答える 1