PHP регулярное выражение

интернет программирование php веб дизайн регулярные выражения

Доброго времени суток!
есть регулярное выражени которое делит текст на предложения

preg_match_all("/.*?[.?!](?:\s|$)/s", $a,$b);

в идеале работает, НО если в тексте есть

"Bibles with varying contents exist.[1] The term" квадратные скобки после точки то делит так:

"exist.[" - скобка после точки а остальное в следующем предложении

решил так:
preg_match_all("/.*?[.?!\]](?:\s|$)/s", $a,$b);

но потом "[1]" может быть в середине предложения....

вопщим если кто знает подскажите пожалуйста как исключить условия такие как

[14, с. 38] - точка и пробел а дальше цифра(но предложение может начинатся с цифры, как тут быть - взять скобки как отдельный объект)

слово.[1] - чтобы не отрывало скобку...

ну и может что-либо по своему успотрению)

Благодарю за ответы заранее!

Примечание:
однажды на меня нашло прозрение и я довел все до толку но потом слетел виндовс со всей работой, а сейчас вспомнить немогу как все было(((
Ответы:
Может тогда всё же лучше разбирать не по регулярке? А сделать свой алгоритм... Слишком много правил которые надо учесть, не всегда с помощью регулярок это можно решить.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.