Автор Тема: Помогите с парсером  (Прочитано 5462 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Bardel

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 49
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите с парсером
« : 27 Марта 2004, 14:37:34 »
Есть набор строк:
35545fgfg
344dd
8688646dg
Как вырезать что между
Писал:
(?:([0-9]{1,4}<\\/td>){1,4})(?:)([\\S]{1,4})(?:<\\/B><\\/td>)
что то не получается

Как задавать сложные условия выбора
например как сказать на языке рэгов:
может идти или



Писал:
/(?:";

@ar = $s =~ m!!ig;

#результат
$,=" "; print @ar[0,1,-1];
[ основной браузер когда-то был, теперь попробуй разберись =]

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 


Можна ли создавать варианты очень большие по обьему?
« Последнее редактирование: 28 Марта 2004, 11:06:57 от Yukko »
ffg

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Помогите с парсером
« Ответ #1 : 27 Марта 2004, 15:41:44 »
Цитировать
Bardel:
Как вырезать что между

/([^<>]+?)/
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Помогите с парсером
« Ответ #2 : 28 Марта 2004, 11:02:37 »
Макс
 Если ты ограничиваешь РВ слешами, то наверное, слеш внутри надо проескейпить:
<\\/b> иначе нарвешься на предупреждение:
Warning: Unknown modifier \'b\' in ...
и вопросительный знак после плюса абсолютно лишний! Посмотри сам на РВ и поймешь почему.
работа в Украине

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Помогите с парсером
« Ответ #3 : 28 Марта 2004, 11:06:43 »
Bardel и другие
отключайте пожалуйста смайлики в форме отправки сообщения, чтобы люди не гадали, что там написано...
работа в Украине

Оффлайн Bardel

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 49
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите с парсером
« Ответ #4 : 30 Марта 2004, 10:15:30 »
Извините, я кажется не совсем правильно сформулировал задачу:
строки такого типа:
Эта инфа мне нужнаИ эта инфа мне ужнаНет355Нет45Да fgfg
Эта инфа мне нужнаИ эта инфа мне ужнаНет344Да dd
Эта инфа мне нужнаИ эта инфа мне ужнаНЕТ868НЕТ86НЕТ46Да dg
)(([\\S\\s]{1,20})(?:<\\/td>)([\\S\\s]{1,20})(?:<\\/td>)(?:([0-9]{1,3}<\\/td>){1,4})(?:)([\\S]{1,4})(?:<\\/B><\\/td>)

В итоге я должен получить такие строки:
Эта инфа мне нужна     И эта инфа мне ужна    Да fgfg
Эта инфа мне нужна     И эта инфа мне ужна    Да dd
Эта инфа мне нужна     И эта инфа мне ужна    Да dg

Тоесть - /([^<>]+?)/ это не совсем то что надо.  В моей ситуации тэгов
Нет, может быть от одного до 5, тоесть не подойдет и такой  такой  код :  ...то что мне надо...(?:[\\s\\S]{1,30})(?:)([\\S]{1,4}).........
ffg

Оффлайн USE

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
Помогите с парсером
« Ответ #5 : 30 Марта 2004, 10:48:59 »
Bardel ты бы сформулировал нормально задачу, чтобы можно было что-то понять. ты дай это кому-то прочитать, если это кто-то поймет, то он герой!
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Помогите с парсером
« Ответ #6 : 30 Марта 2004, 11:33:26 »
Цитировать
Bardel:
то что мне надо...(?:[\\s\\S]{1,30})(?:
)([\\S]{1,4}).........

т.е. ты уже свою задачу решил?
работа в Украине

Оффлайн USE

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
Помогите с парсером
« Ответ #7 : 30 Марта 2004, 15:46:42 »
Bardel, ты лучше расскажи зачем тебе это делать? это куда интереснее.
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн Bardel

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 49
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите с парсером
« Ответ #8 : 31 Марта 2004, 10:25:22 »
Давайте я екще раз опишу задачу:
есть файл с таблицами 3х типов(4 ячейки, 6ячеек, 8 ячеек)
нужно вырезать первые 2 ячейки и последнюю. Как это сделать 1 регулярным выражением
Ниже привожу таблицы:
Таблица1:




Pole1Pole2Pole3Pole4


Таблица2:




Pole1Pole2Pole3Pole4Pole5Pole6


Таблица3:




Pole1Pole2Pole3Pole4Pole5Pole6Pole7Pole8


Все ячейки могут содержать как символы так и цифры. Вот такая задача

Цитировать
Bardel, ты лучше расскажи зачем тебе это делать? это куда интереснее.

Я хочу вырезать всю информацию по букмекерской линии сайта zebrabet.com(коэфициенты)
ffg

Оффлайн USE

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
Помогите с парсером
« Ответ #9 : 31 Марта 2004, 11:54:02 »
Цитировать
Bardel:
Как это сделать 1 регулярным выражением

Попробуй сделать это сначана тремя выражениями, а потом будешь оптимизировать.
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн Bardel

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 49
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите с парсером
« Ответ #10 : 31 Марта 2004, 14:55:02 »
Цитировать
Попробуй сделать это сначана тремя выражениями, а потом будешь оптимизировать.



Это я знаю
1. /(?:
)([\\S]{1,4})(?:\\/td>)([\\S]{1,4})(?:[\\S\\s]{1,20})([\\S]{1,4})(?:<\\/B><\\td><\\tr>)/

2. /(?:
)([\\S]{1,4})(?:\\/td>)([\\S]{1,4})(?:[\\S\\s]{1,40})([\\S]{1,4})(?:<\\/B><\\td><\\tr>)/

3. /(?:
)([\\S]{1,4})(?:\\/td>)([\\S]{1,4})(?:[\\S\\s]{1,60})([\\S]{1,4})(?:<\\/B><\\td><\\tr>)/

Какк эти з выражения заменить одним?
ffg

Оффлайн Bardel

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 49
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите с парсером
« Ответ #11 : 31 Марта 2004, 15:24:47 »
Тоесть по сути можна обойтись и 3 вариантом, но как сделать по другому чтобы конкретно не привязываться к [\\S\\s]{1,60}. Меня интерисует именно это
ffg

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Помогите с парсером
« Ответ #12 : 31 Марта 2004, 16:19:28 »
Вариант решения на Perl...
$s= "
Pole1Pole2Pole3Pole4Pole5Pole6Pole7Pole8(?:)?(\\S+?)(?:)?