Formulierungsproblem: Regulärer Ausdruck
Ole
- sonstiges
0 Cheatah
hi
ich versuche mich grade an regex und blicke da nicht ganz durch.
der von mir gesuchte ausdruck, soll alle zeichen die nicht zwischen 'name="' und '">' stehen erfassen.
jemand nen tipp damit ich auf den richtigen weg komme?
thx
ole
(8-)>
Hi,
der von mir gesuchte ausdruck, soll alle zeichen die nicht zwischen 'name="' und '">' stehen erfassen.
also soll er beispielsweise 'name="foo">' erfassen, weil das ja nicht zwischen 'name="' und '">' steht. Richtig?
jemand nen tipp damit ich auf den richtigen weg komme?
Ich glaube dass das, was Du vorhast, über eine Mustererkennung hinaus geht. Damit sind RegExp höchstens Hilfs-, nicht jedoch Mittel.
Cheatah
hi
also soll er beispielsweise 'name="foo">' erfassen, weil das ja nicht zwischen 'name="' und '">' steht. Richtig?
genau :)
Ich glaube dass das, was Du vorhast, über eine Mustererkennung hinaus geht. Damit sind RegExp höchstens Hilfs-, nicht jedoch Mittel.
das ist jetzt ein wenig deprimierend für mich, da ich mich die letzten 4 Stunden mit .+[1]{}()|$? etc. rumgeschlagen habe und nurnoch kryptischen müll im kopf habe....nicht das ich es verstanden hätte.
vieleicht bin ich ja so richtig auf dem holzweg mit regex... ich schildere hier mal kurz was ich vorhabe:
ich bekomme mittels entfernter Datenbankabfrage XML-Daten (wieso? siehe https://forum.selfhtml.org/?t=86614&m=512745) in folgender Form:
<?xml version="1.0"?>
<result state="success">
<row>
<column name="id">1</column>
<column name="status">2</column>
<column name="eigner">3</column>
</row>
<row>
<column>4</column>
<column>5</column>
<column>6</column>
</row>
</result>
leider sind die datenfeldnamen in der ersten "zeile" im name-attribut "versteckt".
da die datenfeldnamen je nach abgefragter tabelle variiren dürfte ja klar sein, daher kann ich nicht nach feststehen ausdrücken (z.B. "id" oder "status") suchen.
Für die weiterverarbeitung der daten muß ich aber irgendwie an die datenfeldnamen kommen.
jemand ne idee?
thx
ole
(8-)>
Hi,
vieleicht bin ich ja so richtig auf dem holzweg mit regex... ich schildere hier mal kurz was ich vorhabe:
das ist selten verkehrt :-)
ich bekomme mittels entfernter Datenbankabfrage XML-Daten [...]
Für die weiterverarbeitung der daten muß ich aber irgendwie an die datenfeldnamen kommen.
Der schulmäßige Weg wäre, XSLT einzusetzen - mindestens sofern das von diesen Daten abhängende Ergebnis ein XML sein soll (HTML oder sogar Text gingen auch). Kommt dies nicht in Frage, empfehle ich einen DOM- oder SAX-Parser (o.ä.), also ein System, welches XML beherrscht. Andernfalls bestünde Deine Arbeit darin, ein solches System nachzubauen, was nur bedingt Sinn macht.
Cheatah
Hallo Ole,
ich bekomme mittels entfernter Datenbankabfrage XML-Daten
hast du keine xml-Parser zur Verfügung?
leider sind die datenfeldnamen in der ersten "zeile" im name-attribut "versteckt".
wenn ich dich jetzt richtig verstehe, willst du das was _zwischen_ 'name="' und '">' steht - und nicht das was _nicht_ dazwischen steht (wie in https://forum.selfhtml.org/?t=86719&m=513435 geschrieben), oder?
Das sollte dann nämlich mit ~.*name="(.*)"~U gehen (in php preg_match_all() verwenden, in anderen Sprachen gibt es bestimmt auch eine Möglichkeit).
Grüße aus Nürnberg
Tobias
hi
ich bekomme mittels entfernter Datenbankabfrage XML-Daten
hast du keine xml-Parser zur Verfügung?
doch, habe ich http://torchbox.com/xml/XMLTagDocs/TagReference/
das problem ist nur, das es bei größeren datenmengen verdammt lange dauert bis das ganze z.B. in eine structur gepackt wurde.
leider sind die datenfeldnamen in der ersten "zeile" im name-attribut "versteckt".
wenn ich dich jetzt richtig verstehe, willst du das was _zwischen_ 'name="' und '">' steht - und nicht das was _nicht_ dazwischen steht (wie in https://forum.selfhtml.org/?t=86719&m=513435 geschrieben), oder?
doch, im prinzip schon, da ich da davon ausgegangen bin, das ich das drumherrum einfach wegrationalisiere :)
Das sollte dann nämlich mit ~.*name="(.*)"~U gehen (in php preg_match_all() verwenden, in anderen Sprachen gibt es bestimmt auch eine Möglichkeit).
auch ein guter ansatz :)...werd mal damit weiterprobieren :)
thx
ole
(8-)>
Hallo,
leider sind die datenfeldnamen in der ersten "zeile" im name-attribut "versteckt".
wenn ich dich jetzt richtig verstehe, willst du das was _zwischen_ 'name="' und '">' steht - und nicht das was _nicht_ dazwischen steht (wie in https://forum.selfhtml.org/?t=86719&m=513435 geschrieben), oder?
Das sollte dann nämlich mit ~.*name="(.*)"~U gehen (in php preg_match_all() verwenden
Oder effizienter mit ~name="([^"]+)"~ bzw. ~<column name="([^"]+)">~ und ähnlich, mit den genannten Einschränkungen.
Mathias