2012-12-27 4 views
0

Моего регулярное выражение (?<![\u0410-\u042F])[.!?](?=(\s)?(\s)?[\u0410-\u042F]|[\u04E8]|["]|[\u201C]|![0-9])Regex теряет последний символ

Я хочу разделить абзац на предложения.

я регулярное выражение с re.split() и распечатать массив

Это входной образец я сделал:

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

Он печатает отлично, за исключением, что последний символ (в этом случае удаляется период,? или!)!

Я искал в Интернете, и он говорит, чтобы окружать пунктуацию ярлыками, но это не работает.

Я использую Python 3.

ответ

0

Поместите группу захвата вокруг символа (ов) вы хотите сохранить в расколе:

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

периоды будут добавлены новые элементы в итоговый список. Из documentation:

Если захватывая круглые скобки используются в шаблоне, то текст всех групп в шаблоне также возвращается как часть результирующего списка.

Если вы не хотите этого, вам придется разделить на самом пространстве, обеспечивая, что пространство предшествует на согласующий период других знаков препинания (с помощью просмотрового за утверждение) ,

+0

Но это ставит период на новую строку :( –

+0

@ user1925847: вы можете объединить это обратно в предыдущую строку или использовать другое выражение для разделения, а именно пространство. –

Смежные вопросы