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
Форумы портала PHP.SU :: Версия для печати :: помогите с регуляркой
Форумы портала PHP.SU » PHP » Регулярные выражения » помогите с регуляркой

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

1. sberkut - 26 Августа, 2010 - 13:09:53 - перейти к сообщению
Есть название шин випа:
Nokian Hakkapeliitta R 245/40 R18 97R
Nokian Hakkapeliitta 7 215/50 R17 95T

нужно выцепить 245/40 R18 , подскажите как сделать?
спасибо
2. DedMorozzz - 26 Августа, 2010 - 13:47:58 - перейти к сообщению
а свои мысли?
И формулировка не верная. Ибо не ясно, только 245 или всё что до и после слэша...
3. Саныч - 26 Августа, 2010 - 14:11:59 - перейти к сообщению
я думаю вот так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. /^.+(\d+\/\d+\sr\d+).+$/i

да и харашо бы по конкретней орписать задачу, и какие варианты строк могут быть
4. DedMorozzz - 26 Августа, 2010 - 14:14:50 - перейти к сообщению
Цитата:
.+(\d+\/\d
не подойдёт. Жадный поиск съест максимум...
5. Саныч - 26 Августа, 2010 - 14:24:17 - перейти к сообщению
DedMorozzz пишет:
не подойдёт. Жадный поиск съест максимум...

немного подправил
CODE (htmlphp):
скопировать код в буфер обмена
  1. /^.+?(\d+\/\d+\sr\d+).+?$/i

проверено, работает
Проверял на js
CODE (javascript):
скопировать код в буфер обмена
  1. var str = "Nokian Hakkapeliitta R 245/40 R18 97R";
  2. str = str.match(/^.+?(\d+\/\d+\sr\d+).+?$/i);
  3. str[1]; //то что нам и нужно
6. DedMorozzz - 26 Августа, 2010 - 14:30:57 - перейти к сообщению
да чесно гря - вообще не понятно, зачем отвечать людят, которые не приложили никаких усилий, что бы найти ответ... Пусть сперва укажут хотя бы что делали. И не важно криво, не криво. Главное что не по принципу "а ну ка, напишите мне код".

+ ко всем и с названием темы "ПОМОГИТЕ!!"))) Для поисковика это нереально полезно. Не 1 человек такую тему не найдёт.
7. Саныч - 26 Августа, 2010 - 14:46:23 - перейти к сообщению
Ну почему же не приложили никаких усилий? Человек ведь нашел форум, зарегистрировался, открыл тему... целое дело Улыбка

А если серьезно, неважно приложил человек усилия или нет. Просто он спросил и тупо возьмет и подставит ответ в свой код, а я же на его вопросе лишний раз для себя попрактиковался... И в следущий раз, когда у него возникнет опять проблема, он снова полезет на форум, а я же смогу решить ее сам и намного быстрей, чем он будет ждать ответа... Тут дело в желании самого человека...
8. DedMorozzz - 26 Августа, 2010 - 14:51:42 - перейти к сообщению
ИМХО, для практики плохо использовать краткие обозначения. Порой сталкиваюсь с регулярками в несколько строк. И когда там такие обозначения, т.е. в неявном виде, это жуть...
Ибо \s и \S весьма похожи. В тексте можно даже не заметить или не обратить внимания или забыть, в каком было регистре, но при этом они означают СОВЕРШЕННО противоположное. + в наших реалиях \w не включает всё что надо. Намного лучше для читабельности указывать в явном виде. Там невозможно ошибиться.
9. sberkut - 26 Августа, 2010 - 15:18:11 - перейти к сообщению
спасибо, ваши ответы не пройдут впустую Улыбка я в любом случае попытаюсь понять логику ) спасибо Саныч
10. Joo - 27 Августа, 2010 - 10:44:56 - перейти к сообщению
Делал я софтину для разбора прайса шин и дисков, вот с такими кодировками.
Тут лучше указать более жестко:
PHP:
скопировать код в буфер обмена
  1. '%^.*?(\d{2,3})\/(\d{2})\s+R(\d{2}).*?$%im'

Если каждую строку обрабатываешь по отдельности то можно просто
PHP:
скопировать код в буфер обмена
  1. '%(\d{2,3})\/(\d{2})\s+R(\d{2})%i'

DedMorozzz пишет:
да чесно гря - вообще не понятно, зачем отвечать людят, которые не приложили никаких усилий, что бы найти ответ...

Ну так не отвечай, или своим возмущением лишний пост набить хочешь?
11. Саныч - 27 Августа, 2010 - 12:31:49 - перейти к сообщению
Joo пишет:
'%^.*?(\d{2,3})\/(\d{2})\s+R(\d{2}).*?$%im'

Это впринцепи тоже самое, что и я написал, просто я указал "один и больше символов" только из-за незнания того, какие там цифры могут быть...
Смешно получается, хоть и учусь на автомобильном факультете, а какие цифры могут быть в маркировке шин не знаю Улыбка
12. Joo - 27 Августа, 2010 - 14:46:24 - перейти к сообщению
Саныч пишет:
Это впринцепи тоже самое, что и я написал, просто я указал "один и больше символов" только из-за незнания того, какие там цифры могут быть...
Смешно получается, хоть и учусь на автомобильном факультете, а какие цифры могут быть в маркировке шин не знаю

Да, конечно просто я на личном примере знаю, когда прайсом занимается куча человек можно так выловить мусор. А так да, почти то-же самое.

 

Powered by ExBB FM 1.0 RC1