Проблема с регуляркой

programmer_2006

Новичок
Проблема с регуляркой

Пример: "Было дело ранней весной.На улице стояла невыносимая жара.Поэтому все гуляли по вечерам." Мне надо из текста получить предложение где стоит слово "жара" я использую
PHP:
$mat = array();
$tmp = preg_match( '/\.[^\..*]жара.*\./Usi', $str, $mat );
Результат нулевой.
 

kruglov

Новичок
[^\..*] - поясните смысл этого выражения. Потом, почему * внутри скобок?
 

programmer_2006

Новичок
Смысл таков "Дать мне то что начинается с точки, не содержит точки, содержит искомое слово потом любое кол-во символов и завершается точкой".
 

Crazy

Developer
programmer_2006, не очень не хочется тебя огорчать, то PHP понимает это совсем иначе. Как? Это есть в документации.
 

Bitterman

Новичок
Одну точку из квадратных скобок убрать, звездочку вынести за скобки и повторить эту же хрень после слова "жара" вместо ".*". Прочитать мануал по регулярным выражениям.
 

nimistar

Новичок
Автор оригинала: Bitterman
Одну точку из квадратных скобок убрать, звездочку вынести за скобки и повторить эту же хрень после слова "жара" вместо ".*". Прочитать мануал по регулярным выражениям.
угу и точку экранированную с торца убрать нафих!!! :) ибо предложение начинается не с точки ... :)
 

Bitterman

Новичок
nimistar
угу и точку экранированную с торца убрать нафих!!! :) ибо предложение начинается не с точки ... :)
Ага, оно начинается сразу после нее. А если убрать эту точку, то я не уверен, что будет браться все предложение (хотя вполне возможно, надо проверить).
 

nimistar

Новичок
Проверил ... в выражении стоит условие ... "все что не точка" :) соответственно все что перед ней и выпадает!

(хотя коряво это .... желательно применить выражение типа "придшествует точка или начало данных" - но в целом и так отработает ... на производительности точно выиграешь ;-), засчёт точности!)
 

programmer_2006

Новичок
вроде да, счас еще добавлю проверку на !?: и порядок. Если есть еще какойто вариант регулярки выложите я проверю.

-~{}~ 29.05.07 17:47:

а как ограничить с начала например если в начале стоит ! или еще какие небудь символы?
 

kruglov

Новичок
А зачем ограничивать с начала? Вы ограничивайте набор допустимых внутри предложения символов.
 

programmer_2006

Новичок
Все разобрался спасибо. Сложно работать с регулярками когда с ними раз в пол года сталкиваешься.
 
Сверху