Автор Тема: Помогите найти ошибку.  (Прочитано 13714 раз)

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

Оффлайн abra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите найти ошибку.
« : 22 Декабря 2008, 19:47:02 »
Доброго времени суток

Имею на странице 2 пары тагов . Нужные мне данные находятся между первой парой.
 
 (.+?)
 
Не срабатывает. Более того, когда я пытаюсь подобрать правильное выражение с помощью онлайн генератора, как только я заношу в скобки значения, совпадения сразу пропадают.

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Помогите найти ошибку.
« Ответ #1 : 22 Декабря 2008, 22:48:14 »
А избавиться от двух нельзя? Нехорошо это.

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Помогите найти ошибку.
« Ответ #2 : 23 Декабря 2008, 10:26:53 »
# cat > /tmp/test.html


Test


Body A


Body B


# perl -le \'my $file = do { local $/; }; $file =~ m#(.+?)#sm && print $1\' < /tmp/test.html

Body A

#

Оффлайн abra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите найти ошибку.
« Ответ #3 : 23 Декабря 2008, 11:37:31 »
hanslinger
 в смысле "избавиться от двух"?.......

arto я с перлом не дружу........ мне б на с#. В любом случае, если я привильно понимаю, это то же выражение. Или нет?

(.+?) выбирает обе пары.

Как мне только  выдернуть только то, что между первой парой стоит? Т.е. сами теги body мне не нужны.
« Последнее редактирование: 23 Декабря 2008, 12:17:19 от abra »

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Помогите найти ошибку.
« Ответ #4 : 23 Декабря 2008, 12:47:00 »
нет.
как видите, выбирает содержимео первой пары.

учить c# влом.

Оффлайн abra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите найти ошибку.
« Ответ #5 : 23 Декабря 2008, 13:17:28 »
arto
да я в общем то и не прошу учить :о), но и видеть, что ваш пример выбирает только то, что мне нужно, я не вижу именно по причине своего не знания перла......

Было бы здОрово, если б вы само исправленное выражение написали, без сопровождающего кода, что б было видно где у меня косяк.

... Я уж и просить боюсь о кратких комментариях необходимых дополнений...

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Помогите найти ошибку.
« Ответ #6 : 23 Декабря 2008, 14:13:38 »
Я имел в виду то, что не должно быть двух body на странице. По идее.

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Помогите найти ошибку.
« Ответ #7 : 23 Декабря 2008, 15:45:39 »
я не знаю синтаксиса регулярных выражений в c#.
он может отличаться от perl

попробуйте (?sm)(.+?), результат должен быть в группе 1

Оффлайн abra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите найти ошибку.
« Ответ #8 : 23 Декабря 2008, 16:02:47 »
arto во-о-от...... Спасибо. Теперь картина проясняется.

 (?sm) это флаги Multiline и Dot all Mode?

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Помогите найти ошибку.
« Ответ #9 : 23 Декабря 2008, 16:33:59 »
да. можете добавить i

Оффлайн abra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите найти ошибку.
« Ответ #10 : 23 Декабря 2008, 16:48:09 »
Понятно.
Простите за назойливость, но не подскажите что отвечает за влючение/исключение значений в выборку?

 Например как выглядело бы то же выражение, если бы мне надо было исключить из выборки и включить ? Понимаю, что в данной ситуации вопрос бредовый, но для примера  подойдет.
« Последнее редактирование: 23 Декабря 2008, 17:45:55 от abra »

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Помогите найти ошибку.
« Ответ #11 : 23 Декабря 2008, 17:17:39 »
(.+?)

по регулярным выражениям подойдет книжка фридла, второе или третье издание, либо
perldoc perlre, perldoc perlretut для перловых выражений.

Оффлайн abra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите найти ошибку.
« Ответ #12 : 23 Декабря 2008, 17:45:29 »
спасибо. Как тут вам рейтинг можно поднять? :о)

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Помогите найти ошибку.
« Ответ #13 : 24 Декабря 2008, 07:54:13 »
Цитировать
hanslinger: По идее.


hanslinger, мы с тобой одиноки в этом мире (ц)

Тема закрыта.
LJ: Backslashed life (rss)

 

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