0

私の正規表現は(?<![\u0410-\u042F])[.!?](?=(\s)?(\s)?[\u0410-\u042F]|[\u04E8]|["]|[\u201C]|![0-9])

段落を文に分割したい。

re.split()を使用して正規表現を実行し、配列を出力します

これは私が行ったサンプル入力です:

Мамлекеттик айыптоочу Биринчи май райондук сотуна берген бул сунушун диний кастыкты ырбатпоо аракети менен негиздеди. Мусулмандарга акаарат келтирип жатат деген кайрылуу каттын негизинде УКМК Тезекбаевге каршы кылмыш ишин козгоп, сотко өткөргөн. Бул ишти бүгүн Биринчи май райондук соту карап бүттү жана өкүм эртең чыгарыларын маалымдады. Тараптар мунаса тапты; Ишти карап жаткан мамлекеттик айыптоочу Кудайберди Чаргынов Кубанычбек Тезекбаевдин диний кастыкты козутууга болгон аракети толугу менен далилденгенин билдирүүдө. Бирок мамлекеттик айыптоочу диний кастыкты ырбатпоо максатында Кыргызстандын Кылмыш кодексинин 65-беренесине ылайык, иш өз маанисин жоготконуна байланыштуу кылмыш ишин Т.У. кыскартып салууну сунуштады.

最後の文字(この場合はピリオド、?、または!)が削除されることを除いて、正常に出力されます。

オンラインで検索したところ、句読点を先読みタグで囲むように表示されていますが、機能しません。

私はPython3を使用しています。

4

1 に答える 1

0

スプリットで保持したいキャラクターの周りにキャプチャグループを配置します。

(?<![\u0410-\u042F])([.!?])(?=(\s)?(\s)?[\u0410-\u042F]|[\u04E8]|["]|[\u201C]|![0-9])

期間は、結果のリストに新しい要素として追加されます。ドキュメントから:

キャプチャ括弧がパターンで使用されている場合、パターン内のすべてのグループのテキストも結果のリストの一部として返されます。

これが不要な場合は、スペースの前に他の句読点の一致するピリオドが付いていることを確認して、スペース自体を分割する必要があります(後読みアサーションを使用)。

于 2012-12-27T22:55:42.090 に答える