• XSS.stack #1 – первый литературный журнал от юзеров форума

Регулярное вырожение

Darkmist

HDD-drive
Пользователь
Регистрация
16.02.2008
Сообщения
43
Реакции
0
есть предложение в нем 3 точки, надо взять от второй точки 3 символа влево и 3 в право
или надо взять все цифры от первого слеша до следующего .
например : 106.967/112.798/138.099/7.947 - нужно число 112.798
как решить :bang:
 
Все числа между слешами с разделителями-точками (все-таки числа или символы?) (PCRE, Perl):

Код:
$string = '106.967/112.798/138.099/7.947';
@numbers = $string =~ m{/?([\d.]+)/?}g;
# сама регулярка: \/?([\d\.]+)\/?
# (если использовать '/' в качестве ограничителя регулярки,
# а не '{}' как я сейчас)
print $numbers[1];

Если независимо от разделителя (я не понял, стоит ли на него ориентироваться?)
Код:
$string = '106.967/112.798/138.099/7.947';
@numbers = $string =~ m{(\d{1,3}\.\d{1,3})}g;
print $numbers[1];

Хотя не понимаю, почему тут нельзя обойтись простым split:
Код:
$string = '106.967/112.798/138.099/7.947';
@numbers = split('/', $string);
print $numbers[1];

split применительно к нахождению второго числа (остальные не выделяем, только 1е, 2е и остаток строки):
Код:
$string = '106.967/112.798/138.099/7.947';
@numbers = split('/', $string, 3);
print $numbers[1];
 
смертельный левый спасибо!! твоя регулярка помогла конечный вид такой
/=.+?\/(.+?)\//

ruby-1.9.2-p180 :004 > dev=r.match t
=> #<MatchData "= 106.967/112.798/" 1:"112.798">

Асемблер твоя тоже работает \/?([\d\.]+)\/? но выдает все числа )))
спасибо огромное за помощь !! с меня шелл на whitehouse.gov ))
 
/^.+?\/(.+?)\//

Чорд, о том же начал думать, но решил сперва дождаться ответов на свои вопросы :D

Darkmist
Я не "Асемблер" :)
Потому-то и было "print $numbers[1];" и написано "Все числа".
Я ж потому и писал и спрашивал об точных условиях и о целесообразности использования в данном случае регулярок вообще; но если уж составлять - то на мой взгляд сразу как можно более жесткую (потому и спросил - символы или цифры).
 
ведь тоже можно, потом из хеша по нужному номеру!!

По хешу - имеешь ввиду например перловский ассоциативный массив? Или что?
Мое решение с вытаскиванием сразу всех чисел "дороговато", да, потому я и предложил сплит или уточнить условия :)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх