我的正则表达式是(?<![\u0410-\u042F])[.!?](?=(\s)?(\s)?[\u0410-\u042F]|[\u04E8]|["]|[\u201C]|![0-9])
我想将一个段落分成句子。
我使用re.split()执行正则表达式并打印数组
这是我做的示例输入:
Мамлекеттик айыптоочу Биринчи май райондук сотуна берген бул сунушун диний кастыкты ырбатпоо аракети менен негиздеди. Мусулмандарга акаарат келтирип жатат деген кайрылуу каттын негизинде УКМК Тезекбаевге каршы кылмыш ишин козгоп, сотко өткөргөн. Бул ишти бүгүн Биринчи май райондук соту карап бүттү жана өкүм эртең чыгарыларын маалымдады. Тараптар мунаса тапты;
Ишти карап жаткан мамлекеттик айыптоочу Кудайберди Чаргынов Кубанычбек Тезекбаевдин диний кастыкты козутууга болгон аракети толугу менен далилденгенин билдирүүдө. Бирок мамлекеттик айыптоочу диний кастыкты ырбатпоо максатында Кыргызстандын Кылмыш кодексинин 65-беренесине ылайык, иш өз маанисин жоготконуна байланыштуу кылмыш ишин Т.У. кыскартып салууну сунуштады.
除了最后一个字符(在这种情况下是句号,?或!)被删除外,它打印出来的很好!
我在网上搜索,并说它用lookahead标签包围标点,但它不起作用。
我正在使用Python 3。
答案 0 :(得分:0)
将一个捕获组放在要在分割中保留的字符周围:
(?<![\u0410-\u042F])([.!?])(?=(\s)?(\s)?[\u0410-\u042F]|[\u04E8]|["]|[\u201C]|![0-9])
这些句点将作为新元素添加到结果列表中。来自documentation:
如果在模式中使用捕获括号,则模式中所有组的文本也将作为结果列表的一部分返回。
如果你不想要这个,你必须分开空间本身,确保空间前面一个匹配的其他标点符号(使用一个后面的标记)断言)。