Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
0 Всего найдено: 20
Donate_employer Сообщение 04/05/2010 09:57 Копия темы
Регулярное выражение. Нужна помощь.
Есть, например, вот такая строка: Shed moose antler; 19,7"(50cm)length, 5,3"(39cm)wide; weight 3.3Ibs(1.5kg).
Нужно вытянуть число (килограммы), которое находится между «(» и «kg)»
Делаю вот так:

preg_match('|\((.*)kg\)|Ui', $str, $out);

но выводит не то, что нужно — все, что находится после первой открывающейся скобки.
Подскажите, пожалуйста, какое выражение более корректное для этого случая.
dotbarsik Сообщение 04/05/2010 09:59 Копия темы
Павел в заминке!
Donate_employer Сообщение 04/05/2010 10:01 Копия темы
ДА!
RiDDi Сообщение 04/05/2010 10:03 Копия темы
preg_match('|([\d\.]+)kg|Uis', $str, $out);
devilmaycry Сообщение 04/05/2010 10:08 Копия темы
preg_match("|Ibs\((.*)kg|Uis", $x, $s);

попробуй так
Donate_employer Сообщение 04/05/2010 10:09 Копия темы
:-*
RiDDi Сообщение 04/05/2010 10:11 Копия темы
.* в s соберет всю страницу ))
RiDDi Сообщение 04/05/2010 10:11 Копия темы
)))
Donate_employer Сообщение 04/05/2010 10:16 Копия темы
Ага, тоже работает.
Спасибо.
Что за Ibs?
ElisDN Сообщение 04/05/2010 10:17 Копия темы
\((.*?)kg\)
Donate_employer Сообщение 04/05/2010 10:17 Копия темы
Да пофик, у меня не страница, а строка из БД. = )
Твой способ поуниверсальнее конечно.
Donate_employer Сообщение 04/05/2010 10:19 Копия темы
Нет, такое точно не сработает.
devilmaycry Сообщение 04/05/2010 10:20 Копия темы
в данном примере будет работать так как надо, понт не засчитан :)
ElisDN Сообщение 04/05/2010 10:22 Копия темы
Stierus Сообщение 04/05/2010 10:46 Копия темы
почему точно не сработает ? жадность меняем .*? – вроде, дельный совет дали :)
barmaley-exe Сообщение 04/05/2010 11:05 Копия темы
То, что идет перед открывающей скобкой.
Donate_employer Сообщение 04/05/2010 11:15 Копия темы
Таким образом тоже будет резать с первой скобки.
RiDDi Сообщение 04/05/2010 11:24 Копия темы
:P бе-бе-бе ))

Просто я вообще не сторонник .* везде сувать ))). Регулярное выражение по своей природе должно обеспечивать стабильность и должный уровень валидности данных. Другими словами отталкиваться надо от тех данных, которые необходимы, а не от их окружения.

Программа работающая исходя из нужных данных будет либо продолжать корректно работать при изменении окружения, либо перестанет работать вообще. Программа аля твоему примеру будет продолжать работать, но НЕКОРРЕКТНО – собирая ошибочные данные и направляя их дальше, тем самым усугубляя ситуацию – например парсер начнет собирать кривую инфу и отправлять её пользователю.

Вот потому и понты )))
Stierus Сообщение 04/05/2010 11:30 Копия темы
/\(([^\(]+)kg\)/i
Donate_employer Сообщение 04/05/2010 11:49 Копия темы
Так должно сработать, да.
Спасибо.
0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"