Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Матчинг предложений регуляркой

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
vlados
Отправлено: 11 Декабря, 2012 - 16:08:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


Добрый вечер, %username%!

Например у меня есть 3 предложения:

Цитата:
Где то в Москве продаются мягкие французские булочки.
Я знаю, что в москве продаются мягкие французские булочки.
Москва город, где продаются булочки.


Из данных предложений мне нужно оставить только те предложения, которые не содержат в себе больших букв, т.е. предложение №1 не пройдет match, в то время как №2 и №3 должны пройти, так как в них нету больших букв.

О способе реализации я знаю, мне нужна лишь регулярка которая будет отсеивать предложения.

Пытался сделать так [А-ЯЁ][а-яё,-].+\. но ничего не вышло из-за того, что матчится все предложения Недовольство, огорчение

Вот сразу ссылка на http://regexr[dot]com?333qh
 
 Top
EuGen Администратор
Отправлено: 11 Декабря, 2012 - 16:29:55
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




vlados пишет:
в то время как №2 и №3 должны пройти, так как в них нету больших букв.

Почему же нет? Или первая буква не должна учитываться?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vlados
Отправлено: 11 Декабря, 2012 - 16:30:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


Верно, первая буква не учитывается.
 
 Top
EuGen Администратор
Отправлено: 11 Декабря, 2012 - 16:37:19
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Считаем, что предложение может начинаться только с буквы:
PHP:
скопировать код в буфер обмена
  1. $sText='Где то в Москве продаются мягкие французские булочки.
  2. Я знаю, что в москве продаются мягкие французские булочки.
  3. Москва город, где продаются булочки.';
  4.  
  5. //Если исходная строка в UTF, то использовать
  6. //preg_match_all('/^[а-яА-ЯЁё][^А-ЯЁ]+$/um', $sText, $rgMatches);
  7. preg_match_all('/^[а-яА-ЯЁё][^А-ЯЁ]+$/m', $sText, $rgMatches);
  8. //var_dump($rgMatches);

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vlados
Отправлено: 11 Декабря, 2012 - 16:43:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


Огромное вам спасибо за столь полезный и оперативный ответ на поставленную задачу.
(Добавление)
Еще один вопрос, а как сделать чтобы матчились только предложения, которые содержат в себе большие буквы?
 
 Top
EuGen Администратор
Отправлено: 11 Декабря, 2012 - 17:15:19
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match_all('/^.*?[А-ЯЁ]+.*?$/um', $sText, $rgMatches);

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vlados
Отправлено: 11 Декабря, 2012 - 17:17:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


К сожалению, что то не так Огорчение http://regexr[dot]com?333rl
(Добавление)
Зато прекрасно работает такой вариант

^[А-ЯЁ].*?[А-ЯЁ]+.*?$

(Отредактировано автором: 11 Декабря, 2012 - 17:17:50)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB