テキストをスペース、句読点、改行で配列に分割する必要があります。サンプルテキストは次のとおりです。
男性のジャケットは緑色です。現代史上最大のスターである彼は、非常に速く自転車に乗ります (時速 230 km)。それはどのように可能ですか?彼はどんなバイクを使っていますか。彼のバイクのセミオートマチック ギアは非常に高価ですが、その速度に到達するのに大きく役立ちます。彼が世界最速だと主張する人もいます。「彼が自転車に乗っているのを見た!」ジョン・ディア氏が語る。「彼が設定した速度は時速 133.78 キロメートルです」とは信じがたい話です。欺くように聞こえます。
私はすでにそれを行う正規表現を持っています:
preg_split('/(?<=\s)|(?<=\w)(?=[.,:;!?()-])|(?<=[.,!()?\x{201C}])(?=[^ ])/u', $text);
ただし、現在は次semi-automatic
の単語を 2 つの単語に分割していますが、1 つの単語のままにしておく必要があります。のように、ダッシュの横にスペースがある場合semi - automatic
、これは 3 つの単語になります。この正規表現がどのように機能しているのかよくわからないので、助けていただければ幸いです。
2 つ目の問題は、テキストに改行が含まれている場合、改行をキャッチするだけでなく、冗長な要素が作成されることです。例を参照してください- 要素 [8] と [9]。要素 [8] は冗長です。どうすれば回避できますか?