Frage zu Regex
-
Das ist meine aktuelel Version :
(<a){1,1}(.*)?>Data<\/a>
Ich bekomme weiterhin einen String mit dem ersten gefunden Link und bis zum "Data" Link
Habe bisher noch keine java code - probiere die Reg ex gerade auf der kommandozeile aus
-
Kommandozeile? Inwiefern? Ich vermute stark dass da irgendwas schiefgeht, nicht an dem Regex selber.
Und was soll das mit "{1,1}", das bringt doch nichts.Gib mal ein minimal Sample von Regex sowie Input, und sag genau was bei dir rauskommt.
-
Naja ich test das mit grep auf der command line
-
Verstehe, dann werden wir den Fehler wohl haben:
grep -P -o "<a(.*?)>(.*?)Daten<\/a>" test.txt
Rufst du es so auf?
Grep unterstützt per default keine non greedy modifier. Hat aber rein gar nix mit Java zu tun.
-
Nächster Versuch um alle Links vor dem geuchten Link zu ignorieren :
<a(.*?)href=(.+?)>(?!href)(.*)Data<\/a>
-
Wozu, hast du meine letzt Antwort gelesen? Gehts mit Java statt grep?
Überall gehts, nur mit grep nicht. ._.
-
DarkShadow44 schrieb:
roflo schrieb:
Wenn im Zeichenspezifizierer steht, er soll alle zeichen nehmen, tut er das auch. Du musst also auch die kombination, die das ende markiert, ausschließen.
Wie meinen?
Genau dafür ist non-greedy doch daIn der Tat, hab den OP wohl zu schnell gelesen. Für GNU grep sollte eigentlich mit -P das greedy ? unterstützen.
Edit:
Folgendes funktioniert:echo "<a href="index.php?id=299" onfocus="blurLink(this);">Daten</a>" | grep -Po "(?<=<a\s).*?(?=>Daten</a>)"
Gibt
href="index.php?id=299" onfocus="blurLink(this);"
aus.
-
Danke für die ganzen Antworten.
Ich habe allerdings etwas vergessen.
Der zu durchsuchende String sieht folgendermaßen aus :<a href="index.php?id=290" onfocus="blurLink(this);">BlaBlub1</a><a href="index.php?id=291" onfocus="blurLink(this);">Daten</a><a href="index.php?id=292" onfocus="blurLink(this);">BlaBlub2</a> <a href="index.php?id=293" onfocus="blurLink(this);">BlaBlub3</a>
Ich möchte nun den String
<a href="index.php?id=299" onfocus="blurLink(this);">Daten</a>
parsen und dann den link
index.php?id=299
extrahieren.
Kann mir da jemand noch mal helfen
-
Ich habe nun selber eine Lösung gefunden :
<a\s?href\s?=\s?[\'|\"](\w+.){1,4}[\'|\"]\s?\w+..\w+.\w+..[\'|\"].Ergebnisdienst
Vielelicht ist sie nicht optimal aber sie funktioniert.
-
Ich habe es jetzt noch einmal optimiert :
(<a\s["':a-zA-Z()_%&\.\?=0-9;]+(\s["':a-zA-Z()_%&\.\?=0-9;]+)?>\b)\w+Data
Nun möchte ich im nächsten Schritt nach einem SubString im Link suchen. Es sollen nur links gefunden werden, die auf klasse oder liga enden : z.B Bundesliga oder Kreisklasse
Mein erster Versuch :
(<a\s["':a-zA-Z()_%&\.\?=0-9;]+(\s["':a-zA-Z()_%&\.\?=0-9;]+)?>\b)\w+[klasse|liga]
Allerdings liedert diese suche auch andere Links. Nun meine Frage wie kann man in einem regulären Ausruck nach unterschiedlichen Substrings suchen.
Vielen Dank