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

clevel

Новичок
регулярные выражения

необходимо текст разбить на предложения. сейчас делаю это так:
$prop=preg_split("/\.|\?|\!/is",$cont)
НО! если встречается подстрока вида "тел. (095)" или "д.59"
то это тоже является основанием для выделения нового предложения.
Каким должен быть шаблон для рега, чтобы эти ситуации исключить? (как думается, что-то вроде: точка, затем знак пробела, затем что-то с большой буквы...)
 

jeka!

Просто Member
$prop=preg_split("/\.\s+[A-ZА-Я]{1}|\?\s+[A-ZА-Я]{1}|\!\s+[A-ZА-Я]{1}/s",$cont) ;

В общем тут надо юзать наверное preg_match_all, потому как будут съедаться буквы.
Я думаю в одной реги этого не напишешь, надо 2.
 

clevel

Новичок
я сделал пока так: "/\. [A_ZА-Я]/", но первая буква, естественно, съедается...
насчет preg_match_all, согласен..., придется выдирать по шаблону, а не разделять, как думалось изначально...
 

Silent

Новичок
$prop=preg_split("/(?<=[.?!])\s+(?=[A-ZА-Я])/s",$cont) ;

Так наверное будет немного правильнее. НО: с тем же успехом предложение может начинаться с кавычек или цифры. И вобще, оно будет работать только в том случае, если текст написан по правилам русского языка.

> необходимо текст разбить на предложения. сейчас делаю это так:

Это одно предложение или два?

А если еще вспомнить про инициалы (В.И. Ленин), то придется еще больше усложнять регэксп.
 
Сверху