_Leonchik_
Новичок
нужна помошь по регулярному выражению
Доброго времени суток.
Задача найти в тексте слова кот. начинаются с Большой буквы, более 2-ух символов в длине, и находятся на растоянии одного пробела друг от друга, да и не находящиеся между различными кавычками, т.е . без всякого форматирования и тегов <b|i|a>, а ткже может закончится в коце предложения точкой, запятой в середине предложения.
Например: [Ученику Российской школы, Ивану Петровичу из 10 Класса налили бокал "Светлой Балтики", а он отказался. ]
Из данного примера неоходимо найти:
1) Ученику Российской
2) Ивану Петровичу
3) Светлой Балтики - не должно, т.к. обрамленно кавычками.
Я поступил следующим образом:
1. Выдрал для начало весь текст. кот. не входит в хтмл теги.
2.
В данном случае я решил найти слово с большой буквы [А-ЯA-Z]{1}, после кот. идет само слово более 2-ух символов [а-яa-z]{2,}, и по краям я поставил пробелы а в конце еще добавил точку и запятую. u - поддержка utf-8
Таким образом я нахожу все большие слова. Далее уже в коде я могу проверить на то, рядом ли они находятся.
Не очень удобный подход. И тем более, что поскольку слову допустимо закончится на точке или запятой, и после обработки в коде попадаются пары слов, между кот. есть точка или запятая.
Прошу помощи в построении регулярого выражения.
Доброго времени суток.
Задача найти в тексте слова кот. начинаются с Большой буквы, более 2-ух символов в длине, и находятся на растоянии одного пробела друг от друга, да и не находящиеся между различными кавычками, т.е . без всякого форматирования и тегов <b|i|a>, а ткже может закончится в коце предложения точкой, запятой в середине предложения.
Например: [Ученику Российской школы, Ивану Петровичу из 10 Класса налили бокал "Светлой Балтики", а он отказался. ]
Из данного примера неоходимо найти:
1) Ученику Российской
2) Ивану Петровичу
3) Светлой Балтики - не должно, т.к. обрамленно кавычками.
Я поступил следующим образом:
1. Выдрал для начало весь текст. кот. не входит в хтмл теги.
2.
PHP:
$str = "пример выше";
preg_match_all("~([\s]{0,1}([А-ЯA-Z]{1}[а-яa-z]{2,}[\.\,\s]{0,1}))~u", $str, $match);
Таким образом я нахожу все большие слова. Далее уже в коде я могу проверить на то, рядом ли они находятся.
Не очень удобный подход. И тем более, что поскольку слову допустимо закончится на точке или запятой, и после обработки в коде попадаются пары слов, между кот. есть точка или запятая.
Прошу помощи в построении регулярого выражения.
