Pokaż wyniki 1 do 6 z 6

Temat: POSIX Regular Expression, pytanie

  1. #1
    Zarejestrowany
    Sep 2007
    Skąd
    Tu
    Postów
    1,236

    Domyślnie POSIX Regular Expression, pytanie

    tworze parser do xmlow (rss dokladniej)
    moje wyrazenie "/<item>(.*?)<\/item>/" wydaje sie zbierac od <item> do <, na dodatek zatrzymuje go \n, chcialbym aby zbieralo az do pierwszego napotkanego </item>, ignorujac nowe linie, jak takie wyrazenie bedzie wygladac?
    Ostatnio edytowane przez gogulas : 05-07-2008 - 22:14
    http://gogulas.yoyo.pl/h.gif

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Jesli piszesz w Perlu... to polecam http://search.cpan.org i haslo RSS - dluuuuga lista... a ponizej kod ktory zalatiwa parsowanie 1 regexem niezaleznie od tego ile item'ow jest w srodku...

    Testowy rss.xml wyglada tak:
    Kod:
    <XML><rss title="TEST">
      <item>item1</item>
      <item>item2</item>
      <item>item3</item>
    </rss></XML>
    ... a parser tak:

    Kod:
    #!/usr/bin/perl
    use strict;
    open (RSS, 'rss.xml');
    chomp(my @xml = <RSS>);
    close (RSS);
    my $xml_string = join('',@xml);
    my @res = $xml_string =~ m/<item>(.*?)<\/item>/sig;
    print "Parametry to: ", join(', ', @res), "\n";
    Po uruchomieniu:
    Kod:
    C:\rss.pl
    Parametry to: item1, item2, item3
    Parametry regexa (nie wiem czy to POSIX w sumie ale na pewno Perl):
    s - single line, traktuj $xml_string jak jedna linie
    i - case-insensitive
    g - global match, znajdz wszystkie wystapienia
    Ostatnio edytowane przez TQM : 05-07-2008 - 22:39
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3
    Zarejestrowany
    Jan 2007
    Skąd
    somewhere in time
    Postów
    510

    Domyślnie

    spróbój zastosować modyfikator s
    "/<item>(.*?)<\/item>/s"

  4. #4
    Zarejestrowany
    Sep 2007
    Skąd
    Tu
    Postów
    1,236

    Domyślnie

    ja jade w php, kiedy dam:
    preg_match_all("m/<item>(.*?)<\/item>/sig",$dane, $out);
    zwraca error Warning: preg_match_all(): Delimiter must not be alphanumeric or backslash

    natomiast kiedy dam
    preg_match_all("/<item>(.*?)<\/item>/",$dane, $out);
    zwraca puste tablice..

    ratuje sie osobnym regsem dla kazdego elementu
    preg_match_all("/<title>(.*?)<\/title>/", $dane, $title);
    preg_match_all("/<link>(.*?)<\/link>/", $dane, $link);
    preg_match_all("/<description>(.*?)<\/description>/", $dane, $desc);

    dziala ale bywa katastrofalne w skutkach kiedy jakis element sie "nie wezmie", wszystko sie rozjezda i tresc potrafi zbratac sie z innym linkiem czy titlem..

    nie mogl bym po prostu dostac gotowca? :P

    /edit
    @iron
    to samo, pusty array.
    http://gogulas.yoyo.pl/h.gif

  5. #5
    Zarejestrowany
    Jan 2007
    Skąd
    somewhere in time
    Postów
    510

    Domyślnie

    <?php
    $file=file_get_contents("http://hack.pl");
    preg_match_all("#<!--news-->(.*?)<!--/news-->#si",$file,$ar);
    print_r($ar);
    ?>

  6. #6
    Zarejestrowany
    Sep 2007
    Skąd
    Tu
    Postów
    1,236

    Domyślnie

    Poprawka

    dzieki, modyfikator rozprawil sie z problemem, temat moszna zamknac :-]
    Ostatnio edytowane przez gogulas : 05-07-2008 - 23:21
    http://gogulas.yoyo.pl/h.gif

Podobne wątki

  1. pytanie
    By ogejmowiec in forum /dev/null
    Odpowiedzi: 1
    Autor: 04-07-2008, 00:11
  2. pytanie
    By kakak in forum Hacking
    Odpowiedzi: 9
    Autor: 03-28-2008, 17:14
  3. Pytanie!
    By gzM in forum Anonimowość w sieci
    Odpowiedzi: 14
    Autor: 03-27-2008, 09:02
  4. Pytanie
    By Virtual in forum Newbie - dla początkujących!
    Odpowiedzi: 15
    Autor: 12-29-2007, 22:12
  5. Pytanie:)
    By r3cover in forum Hacking
    Odpowiedzi: 1
    Autor: 06-01-2007, 10:09

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj