Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Perl
(Модератор:
McZim
) > Тема:
Помогите с регуляркой
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Помогите с регуляркой (Прочитано 11043 раз)
0 Пользователей и 1 Гость смотрят эту тему.
samlab
Гость
Помогите с регуляркой
«
:
16-03-2010 11:41 »
Есть такая строчка
Код:
<td><b>0.088 $</b> (Тут вы можете взять себе немного копеек)</td>
Постоянно выражение (Тут вы можете взять себе немного копеек), а вот величина 0.088 меняется... Как составить регексп для того, чтобы 0.088 ( или другое число) выцепить. Просто, даже не представляю, как для русских букв регексп составить...
Подмогните, пожалуйста...
«
Последнее редактирование: 16-03-2010 11:42 от samlab
»
Записан
Sla
Команда клуба
Offline
Пол:
Re: Помогите с регуляркой
«
Ответ #1 :
16-03-2010 12:15 »
а может быть ты будешь искать в тегах <b></b>
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
McZim
Модератор
Offline
Пол:
Я странный
Re: Помогите с регуляркой
«
Ответ #2 :
16-03-2010 14:17 »
samlab
, зачем тебе искать в русских буквах? Делай выражение по поиску только цифр!
Записан
The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор
Offline
Пол:
Re: Помогите с регуляркой
«
Ответ #3 :
16-03-2010 17:11 »
Sla
,
McZim
, мало ли на странице тегов <b>... Как раз опираться надо на константы. Другой вопрос, что если строку сменят, то выражение снова править, но универсального нет.
samlab
, данное число можно выделить так:
Код:
(\d+\.\d+)
Добавь к нему константы спереди и сзади для локализации.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
samlab
Гость
Re: Помогите с регуляркой
«
Ответ #4 :
16-03-2010 18:48 »
Спасибо, но не работает
Код:
#!/usr/bin/perl -w
my $test_string = <<"EOF";
<td><b>0.088 $</b> (Тут вы можете взять себе немного копеек)</td>
EOF
if ($test_string =~ m%<td><b>(\d+\.\d+)(Тут вы можете взять себе немного копеек))
{
print "Yes: $1\n";
}
else
{
print "No.\n";
}
Записан
RXL
Технический
Администратор
Offline
Пол:
Re: Помогите с регуляркой
«
Ответ #5 :
16-03-2010 19:29 »
samlab
, все правильно — так работать не будет.
Для начала включаем голову (обязательное требование). Сравни строку в первом посте и что ты написал в выражении. Там очень много отличий.
Потом читаем описание регулярных выражений PCRE. В частности, почитай о спецсимволах. Если нужно вставить константу, а не спецсимвол, то его надо экранировать бекслешом (обрати внимание, как я экранировал спецсимвол "."). Регулярные выражения — штука не простая, но очень мощная и полезная. Т.ч. лучше изучить.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Модератор
Offline
Пол:
Я странный
Re: Помогите с регуляркой
«
Ответ #6 :
16-03-2010 19:39 »
RXL
, хм дык я вроде о том же
samlab
,
Код:
#!/usr/bin/perl
use strict;
use warnings;
my $t_string = "<td><b>0.088 </b> (Тут вы можете взять себе немного копеек)</td>";
if ($t_string =~ m/\d+\.\d+/)
{
print "Yes: $&\n";
}
else
{
print "No.\n";
}
Записан
The CBO without stats is like a morning without coffee. (c) T.Kyte.
samlab
Гость
Re: Помогите с регуляркой
«
Ответ #7 :
16-03-2010 20:34 »
Спасибо, буду разбираться
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Perl
(Модератор:
McZim
) > Тема:
Помогите с регуляркой
Загружается...