0

我的正则表达式是(?<![\u0410-\u042F])[.!?](?=(\s)?(\s)?[\u0410-\u042F]|[\u04E8]|["]|[\u201C]|![0-9])

我想把一个段落分成句子。

我用 re.split() 做正则表达式并打印数组

这是我做的一个示例输入:

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

除了最后一个字符(在这种情况下是句点,?或!)被删除之外,它打印得很好!

我在网上搜索,它说用前瞻标签包围标点符号,但它不起作用。

我正在使用 Python 3。

4

1 回答 1

0

在要在拆分中保留的字符周围放置一个捕获组:

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

句点将作为新元素添加到结果列表中。从文档中:

如果在模式中使用捕获括号,则模式中所有组的文本也会作为结果列表的一部分返回。

如果您不希望这样做,则必须通过确保空格前面有其他标点符号的匹配句点(使用后视断言)来拆分空格本身。

于 2012-12-27T22:55:42.090 回答