Forum Webscript.Ru

Программирование => Регулярные выражения => Тема начата: Abram от 23 Февраля 2004, 13:15:52

Название: СНОВА ВОПРОСЫ
Отправлено: Abram от 23 Февраля 2004, 13:15:52
Итак за выходные накопилось несколько вопросов:

1.Есть выражение: /(B1)(B2)(B3)/s, где в скобках стоят выражения. Есть ли такая функция которая находит выражение /(B1)(B2)(B3)/s и вкидает в масив куски В1, В2, В3. Или как это можно сделать по-другому?

2.Есть выражение: /(B1)(B2)(B3)/s. Как ему сказать, чтобы возвращало только кусок В1 и В3(без В2).
Пробовал писать /(B1)(?:B2)(B3)/s - не получается

3.Как в регах организовуется вевтление? Например у меня такая задача:
В прайсе может указываться оптовая цена а может и не указываться:
1.
РОЗН    ОПТ
12.5     12.1
11.5     11.0
HTML код -
12,5
11.5
12.1
11.0
2.
РОЗН    ОПТ
12.5     12.1
11.5    
HTML код -
12,5
11.5
12.1
 
Как правильно вырезать данные?

4.Может кто знает ссылки на книги и руководства по регулярным вырежаниям? Все что встречал в сети - небольшие статейки и мало примеров. Хочется нырять глубже.
Название: Парсинг прайса в html часть 3
Отправлено: Yukko от 23 Февраля 2004, 13:50:59
Цитировать
Abram:
Есть ли такая функция которая находит выражение

а чем [p]preg_match[/p] не устраивает?


Цитировать
Abram:
Есть выражение: /(B1)(B2)(B3)/s. Как ему сказать, чтобы возвращало только кусок В1 и В3(без В2).

Код!!! Где Код???!!! Я тебе уже раз доказал, что ищет, еще раз доказать?
Цитировать
Abram:
3.Как в регах организовуется вевтление?

читай статьи (http://forums.webscript.ru/showthread.php?s=&threadid=15810&msgnum=1) там я описал как пользоваться альтернативами. И примеры там тоже есть...
Название: Парсинг прайса в html часть 3
Отправлено: Abram от 23 Февраля 2004, 18:15:36
1.
Цитировать
а чем preg_match не устраивает?

Обьясните пожалуйста с примером:
есть выражение:  /(\\d*)([abc]*)([A]*)/
и есть таблица с полями П1 П2 П3
В результате работы скрипта я должен получить в базу:
П1 - (\\d)*
П2 - ([abc]*)
П3 - [A]*)
где в поля пишутся елементы исходного выражения записаного выше.
2.
Опять пример:
$a="SFSSHSDHDF23dfgGJFJFGJFJF";
Выражение которое вырезает 23dfg:
/(\\d*)([a-z]*).
Нужно сделать так чтобы в результате не учитывались символы [a-z]*, тоесть только цифры(Мне нужны цифры которые удовлетворяют этот шаблон)
Я писал (\\d*)(?:[a-z]*), но возвращает всю строку $a Как правильно?
Название: Парсинг прайса в html часть 3
Отправлено: Yukko от 23 Февраля 2004, 18:30:11
$a="SFSSHSDHDF23dfgGJFJFGJFJF";
preg_match("/^[A-Z]*(\\d*)(?:[a-z]*)[A-Z]*$/", $a, $matches);
print_r($matches);
Ты в строке ищешь? вот и получается, что тебе строку надо описать, а потом в ней кусок найти.
Название: Парсинг прайса в html часть 3
Отправлено: Abram от 23 Февраля 2004, 18:44:45
А как сделать для первого случая с базой данных?
Название: Парсинг прайса в html часть 3
Отправлено: metton от 23 Февраля 2004, 20:10:19
Ты вообще на каком языке пишешь-то? Ты спрашиваешь как, но не говоришь ЧТО как. В ПХП это будет в так, в Perl - по-другому...
Название: Парсинг прайса в html часть 3
Отправлено: Yukko от 23 Февраля 2004, 23:26:01
metton
он пишет на PHP.

Цитировать
Abram:
А как сделать для первого случая с базой данных?

сделать preg_match, запомнить то, что нужно в массив, а потом при помощи [p]foreach[/p] разобрать массив по элементам и сформировать sql запросы, выполнить их.

По регам еще вопросы есть? По php и базам данных вопросы в другом форуме...