Помогите с Regex'ом

Статус
В этой теме нельзя размещать новые ответы.

mazai007

Создатель
Регистрация
30 Ноя 2007
Сообщения
47
Реакции
15
Необходимо находить версии
1.0 или 1.2.1 или 1.3.4.1 тоесть всегда имеется
число.точка.число может быть и так 1.12 или 1.43
сейцчас делаю так
Код:
#[0-9.]{3,9}#i
но это не подходит.... если в тексте имеется год....

подскажите как реализовать
 
Если точка обязательно присутствует, то наверно можно сделать как то так:
([0-9]+.[0-9]+)
 
не получится сделать такую регулярку, т.к. формат даты четко подходит под этот шаблон, тут либо отказываться от подмножества дат, либо забить на них (если вероятность наличия дат в исходном тексте ничтожно мала)
 
а исходный текст посмотреть можно?
 
Ad1ce твоя регулярка точно не подходит сразу вижу
Исходный текст разный, просто подставь например Lalalalal 2010 lal 2.1.3 lalala так примерно

В тексте года встречаются от 2008 до 2010 может их можно от фильтровать?
 
Код:
([0-9]{1,3}\.[0-9]{1,3})

а дальше с разрядностью поиграйся. и на будущее желательно исходник для парсинга давать, не все обладают телепатией
 
т.е. в тексте встречаются только года вида 2008 или же еще имеются даты вида 12.12.2008?
 
Код:
#\d\.\d{1,2}\.?\d?\.?\d?#

если в тексте есть даты dd.mm.yyyy, можно ограничить пробелами

PHP:
$str =  "Lalalalal 2010 1.0 или 1.2.1 или 12.12.2008 1.3.4.1 lal 2.1.3  1999 2.1 lalala";
preg_match_all('#\s(\d\.\d{1,2}\.?\d?\.?\d?)\s#',$str,$res);
print_r ($res[1]);
 
Код:
#\d\.\d{1,2}\.?\d?\.?\d?#
если в тексте есть даты dd.mm.yyyy, можно ограничить пробелами
PHP:
$str =  "Lalalalal 2010 1.0 или 1.2.1 или 12.12.2008 1.3.4.1 lal 2.1.3  1999 2.1 lalala";
preg_match_all('#\s(\d\.\d{1,2}\.?\d?\.?\d?)\s#',$str,$res);
print_r ($res[1]);

Вы не учли что формат версии может совпасть с форматом даты
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху