![]() |
RegEx - String zwischen bestimmten Zeichen ermitteln
Hoi,
ich habe mich gerade etwas mit RegEx befasst da es mir für meinen Zweck sinnvoller erschien als mit Pos und PosEx zu arbeiten, nunja jetzt komme ich aber nicht weiter und hoffe auf Hilfe :) Und zwar: suche ich nach einem Link mit diesem Aufbau: ![]() um den zu finden habe ich mir diesen Regex gebaut: (?i)<a(\s*)name(\s*)=(\s*)['|"](\d*)['|"](\s*)href(\s*)=(\s*)['|"](.*)['|"](\s*)>(.*)</a> soweit tut es das auch wie ich gern hätte. Jetzt möchte ich aber aus dem gefundenem Link die Nummer (name) und die Caption bekommen, dafür habe ich mir diese hier gebaut: Nummer: ['|"](\d*)['|"] Caption: (?i)(\s*)>(.*)</a> da ist jetzt mein Problem das ich die Ueichen dazwischen möchte aber er gibt mir bei der Nummer '123456' zurück und bei der Caption >Link Caption</a>, meine Frage wie bekomme ich nur die Zeichen dazwischen? Grüße Daniel |
Re: RegEx - String zwischen bestimmten Zeichen ermitteln
[^<>]*
"foo123" (.*)([0-9]+) ist "greedy" (.*?)([0-9]+) ist "ungreedy" man beachte das ? nach dem quantifier |
Re: RegEx - String zwischen bestimmten Zeichen ermitteln
Hi Christoph,
irgendwie funktioniert das nicht... oder ich bin zu doof dazu :-/ Hab es mit dem Regex Coach getestet aber er matched nur wirres zeuchs?! Achja ich hab da noch was, bei diesem RegEx (?is)<a(\s*)name(\s*)=(\s*)['|"](\d*)['|"](\s*)href(\s*)=(\s*)['|"](.*)['|"](\s*)>(.*)</a> matched er alles zusammen (Rot und Blau) ich möchte aber gerne nur das Rote kann ich ihm irgendwie beibringen er soll nach dem ersten </a> schon aufhören mit suchen? Zitat:
|
Re: RegEx - String zwischen bestimmten Zeichen ermitteln
dein (.*) zwischen den <a></a> muss so aussehen:
([^<>]*) oder (.*?) jetzt verstanden? |
Re: RegEx - String zwischen bestimmten Zeichen ermitteln
Hast Du die Links im Rahmen einer HTML-Datei?
Falls ja so lass doch den IE (TWebBrowser) die Arbeite erledigen. In TWebBrowser laden, über das DOM (IHtmlDocument2) die Link-Liste geben lassen und diese Auswerten. Siehe Beispiel auf ![]() |
Re: RegEx - String zwischen bestimmten Zeichen ermitteln
@Christoph
okay also "(?i)(\s*)>([^<>]*)</a>" liefert ">Link Caption</a>", daher verstehe ich es immer noch nicht?! ich würde gerne nur "Link Caption" bekommen. @Bernhard das ist zwar eine Idee aber da ich mit dieser Methode wie ich es jetzt vor habe gleich andere Links oder der gleichen ausschließen kann ist das denke ich mal besser für mein Vorhaben geeignet. Generell brauche ich als erstes den <tr></tr> Block (diesen bekomme ich über (?i)<tr(.*)class(\s*)=(\s*)['|"]class(\d{1,})['|"](.*)> wobei ich da das selbe problem habe wie oben mit dem Rot und Blau wenn ich den singeline Flag setze) dann den Link und von diesem dann den Wert von name und die Caption und notfalls die anderen Informationen aus den Spalten. |
Re: RegEx - String zwischen bestimmten Zeichen ermitteln
Zitat:
du scheinst einen fehler drin zu haben, weil das dieses einzelne muster (weils in klammen ist) das </a> nicht erfassen sollte. wie es aussieht, nimmst du den text ab nach dem ersten pattern, statt den text des zweiten patterns... das regex schon ist richtig, deine programmlogik macht nen fehler. |
Re: RegEx - String zwischen bestimmten Zeichen ermitteln
|
Re: RegEx - String zwischen bestimmten Zeichen ermitteln
Hi,
was für eine RegEx Implementierung benutzt Du? Ggf. ist das Ergebnis in Gruppen unterteilt, wie z.B. ">", "Link Caption" und "</a>". Eventuell kannst Du auch (?:>) und (?:</a>) benutzen, dann wird das Ergebnis nicht mit den in den Match genommen. mfG mirage228 |
Re: RegEx - String zwischen bestimmten Zeichen ermitteln
Hi David,
öhm wie finde ich das herraus? Aber ich hab im Regex Coach mal selection 2 gewählt (siehe neues Bild oben). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz