まず、おそらく「文」とは何かについて独自の定義に到達し、次にその定義を実装する必要があります。たとえば、次のようにします。
He said: "It's OK!"
一文か二文か?一般的な答えは関係ありません。1 つまたは 2 つの文として解釈するかどうかを決定し、それに応じて続行します。
第二に、これに正規表現を使用するとは思いません。代わりに、各文字をスキャンしてシーケンスを検出しようとしました。ピリオドだけでは文を区切るのに十分ではないかもしれませんが、ピリオドの後に空白またはキャリッジ リターン (または文字列の末尾) が続くと、おそらく十分です。これにより、すぐに USA (空白が続かないピリオド) を取り除くことができます。
Prof. や Dr. などの一般的な略語については、辞書を作成することをお勧めします。各言語には独自の一般的な略語のセットがあるため、ユーザーが編集できるようにすることをお勧めします。
各言語には独自の句読点規則のセットもあり、これは句読点文字の解釈方法に影響を与える可能性があります。たとえば、英語では括弧内にピリオドを入れる傾向がありますが (このように)、ポーランド語はその反対を行います (このように)。同じ違いが二重引用符、単一引用符にも当てはまります (一部の言語ではそれらをまったく使用せず、アポストロフィなどと区別できない場合もあります)。ルールは、少なくとも部分的には言語固有でなければならない場合があります。
最終的には、文を区切る人間の方法に近づけることができますが、分析がうまくいかない場合が常にあります。たとえば、「Prof.」を認識する辞書があるとします。略語として、あなたは何をしようとしていますか
Most people called him Professor Jones, but to me he was simply The Prof.
大文字で始まる別の文があっても、それは文の終わりを知るのに役立ちません。
Most people called him Professor Jones, but to me he was simply Prof. Bill.