Автор Тема: Парсинг XML + много других вопросов.  (Прочитано 9226 раз)

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

Оффлайн GrAfF

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Парсинг XML + много других вопросов.
« Ответ #15 : 02 Февраля 2004, 16:07:14 »
Chs, обромное спасибо, очень сильно помог!!! ;)

Теперь серьёзно. Где копать? Рыл везде, пока никак не понял. Если написать =~ m/, это вроде многострочка. Но IMHO это означает, что сама регулярная строка многострочно написана. Так? Как, как парсить? Понятно, что (.*?) не проходит, т.к. точка не может означать \\n. Менял на []*?, тоже не работает. А как ещё? Заменять \\n на [tutanovayastroka]? Это не красиво. Как, как правильно, Chs???
WBR, GrAfF.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Парсинг XML + много других вопросов.
« Ответ #16 : 02 Февраля 2004, 16:38:16 »
Цитировать
Chs, обромное спасибо, очень сильно помог!!!

Да не за что!:) Но согласись, что я дал четкий ответ на поставленный вопрос.:))
Цитировать
Где копать?

Копать в perldoc perlop в части Regexp Quote-Like Operators, perldoc perlre.
Цитировать
Понятно, что (.*?) не проходит, т.к. точка не может означать \\n.

Может. RTFM.
2B OR NOT 2B = FF

Оффлайн GrAfF

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Парсинг XML + много других вопросов.
« Ответ #17 : 02 Февраля 2004, 23:31:15 »
Chs, сдаюсь. Смотрел документацию, но ничего так и не выглядел. Кажется, что всё-таки /m указывает на многострочность строки (хорошо звучит ;). Но как прописать \\n я так и не нашел. Помоги конкретно, плиз.
WBR, GrAfF.

Оффлайн GrAfF

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Парсинг XML + много других вопросов.
« Ответ #18 : 02 Февраля 2004, 23:43:02 »
Решил проблему.
\\n вместе с текстом получилось находить с помощью ([\\w\\W]*?)
Что-то я сразу не сообразил, что такие штуки можно писать внутри [].
И почему-то обходится без /m в регэкспе. Почему?
Почему, говоришь, можно точкой обозначать \\n?
WBR, GrAfF.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Парсинг XML + много других вопросов.
« Ответ #19 : 03 Февраля 2004, 09:44:06 »

#!/usr/bin/perl
$s = "<\\n>";
print "1st found\\n" if $s =~ /<.>/s;
print "2nd found\\n" if $s =~ /<.>/m;

Почувствуй силу, Люк.:)
2B OR NOT 2B = FF

Оффлайн GrAfF

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Парсинг XML + много других вопросов.
« Ответ #20 : 03 Февраля 2004, 15:52:57 »
Очередное спасибко! Тут опять такой случай, когда сначала заработало, а потом по документации лучше понял, почему. :)
Ещё в html доках по Perl кавычки странно оторбажаются, объяснение про точку содержит такую штуку: ``.". Как-то сразу не удалось понять, что они имели в виду. ;)
WBR, GrAfF.

Оффлайн GrAfF

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Парсинг XML + много других вопросов.
« Ответ #21 : 03 Февраля 2004, 18:58:08 »
Предположим, обрабатываемые XML файлы не бывают больше кило 4, 5, 10. Не вредно ли их так же грузить в строчку и изменять внутренности с помощью регэкспов? Вроде наиболее простой и четкий путь. Или я что не знаю? ;)
WBR, GrAfF.

 

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