Marcus Hammel: Problem mit Ausdruck von regulärem Ausdruck

Hallo,

Ich bin verzweifelt. Es ist eigentlich recht einfach in den Tutorials beschrieben aber mit dem komplexen Ausdruck hier bekomme ich keine befriedigende Lösung herbeigeführt.
Ausgangstext ist in etwa so strukturiert:
<meta name="keywords" content="text, test,test, etc." />

Ich würde nun gern "text, test,test, etc." per RegularExpression ergreifen, stoße aber leider immer wieder auf Probleme.
Könntet ihr mir eventuell einen Denkanstoß geben?

MfG,
Marcus Hammel

  1. Sup!

    <meta name="keywords" content="text, test,test, etc." />

    Hmm.... Du willst innerhalb einer Zeile innerhalb von <> etwas erfassen. (Angenommen, es gibt pro Zeile nur ein meta-TAg In Perl ginge das so:

    /<meta .... />/

    Was Du da genau erfassen willst, ist der Inhalt vom content-Attribut.
    Auf das content folgt unmittelbar das ", der Inhalt wird von einem weiteren " beendet, nach dem content kommen keine weiteren Attribute, innerhalb des content steht kein " - dann sieht's ungefähr so aus:

    /<meta .* content="(.*)".*/>

    Gruesse,

    Bio

    --
    Keep your friends close, but your enemies closer!
    1. gudn tach!

      Was Du da genau erfassen willst, ist der Inhalt vom content-Attribut.
      Auf das content folgt unmittelbar das ", der Inhalt wird von einem weiteren " beendet, nach dem content kommen keine weiteren Attribute, innerhalb des content steht kein " - dann sieht's ungefähr so aus:

      /<meta .* content="(.*)".*/>

      aber nur ungefaehr, denn:

      my $str = '<meta name="keywords" content="text, test,test, etc." /> <foo bar="baz" quux="quuux" />';
      print $1 if($str=~/<meta .* content="(.*)".*/>/);

      liefert:
      text, test,test, etc." /> <foo bar="baz" quux="quuux

      besser ist
      /<meta .* content="(.*?)".*?/>/
      oder
      /<meta .* content="([^"]*)"/

      prost
      seth