Brauche Hilfe zu StringRegExp (Neu)
-
blackcho -
4. Juni 2015 um 17:50 -
Erledigt
-
-
- Offizieller Beitrag
-
danke
Habe eine weitere frage zu StringRegEXP
Hab jetzt als zum prüfendem String:HTML
Alles anzeigen<div class="blabla" id="blabla_blabla_33" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1030px;top:622px;"><img src="text/bild1_2.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_34" style="z-index:1001;width:70px;height:46px;background:url(text/datei2.png) no-repeat;position:absolute;left:1085px;top:622px;"><img src="text/bild3_4.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_35" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1140px;top:622px;"><img src="text/bild1_4.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_36" style="z-index:1001;width:70px;height:46px;background:url(text/datei4.png) no-repeat;position:absolute;left:1195px;top:622px;"><img src="text/bild1_2.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_37" style="z-index:1001;width:70px;height:46px;background:url(text/datei3.png) no-repeat;position:absolute;left:1250px;top:622px;"><img src="text/bild1_4.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_38" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1305px;top:622px;"><img src="text/bild1_4.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_39" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1360px;top:622px;"><img src="text/bild1_3.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_40" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1415px;top:622px;"><img src="text/bild1_3.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_41" style="z-index:1001;width:70px;height:46px;background:url(text/datei3.png) no-repeat;position:absolute;left:1010px;top:664px;"><img src="text/datei1.png"></div> <div class="blabla" id="blabla_blabla_42" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1065px;top:664px;"><img src="text/bild1_3.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_43" style="z-index:1001;width:70px;height:46px;background:url(text/datei3.png) no-repeat;position:absolute;left:1120px;top:664px;"><img src="text/bild21_3.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_44" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1175px;top:664px;"><img src="text/bild1_4.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_45" style="z-index:1001;width:70px;height:46px;background:url(text/datei3.png) no-repeat;position:absolute;left:1230px;top:664px;"><img src="text/bild4_2.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_46" style="z-index:1001;width:70px;height:46px;background:url(text/datei4.png) no-repeat;position:absolute;left:1285px;top:664px;"><img src="text/bild1_3.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_47" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1340px;top:664px;"><img src="text/bild3_3.png" style="position:relative;bottom:3px;"></div> <div class="blabla" id="blabla_blabla_48" style="z-index:1001;width:70px;height:46px;background:url(text/datei2.png) no-repeat;position:absolute;left:1395px;top:664px;"><img src="text/bild1_3.png" style="position:relative;bottom:3px;"></div>
Will jetzt nur die zahl von der ID= und die will ich nur dann wenn am ende "text/bild1" ist
Hab es schon so versucht aber geht leider nichtAutoItStringregexp($string,'\Q<div class="blabla" id="blabla_blabla_\E(\d+)\Q" style="\E\Q"><img src="text/bild1\E',3)
-
Moin!
Wenn der String immer so aussieht, wie oben, gehts ganz einfach:
AutoIt#include <Array.au3> $html = ClipGet() $aIDs = StringRegExp($html, 'id="(.+)" .+src="text/bild1.+"', 3) If IsArray($aIDs) Then _ArrayDisplay($aIDs) Else MsgBox(0, "Nix", "Nichts gefunden!") EndIf
Der Einfachheit halber muss sich der obige String in der Zwischenablage befinden...
-
Danke hast mir wirklich sehr weitergeholfen.
Hab mir Gestern mehrere Tutorials mehrmals durchgelesen um selber eine Lösung zufinden doch hab es einfach nicht geschafft Danke. -
Eigentlich wollte @blackcho ja nur die Zahl hinter der "ID=" haben...
AutoIt
Alles anzeigen#include <Array.au3> $html = ClipGet() $aIDs = StringRegExp($html, 'id=".*([0-9.]+)" .+src="text/bild1.+"', 3) If IsArray($aIDs) Then _ArrayDisplay($aIDs) Else MsgBox(0, "Nix", "Nichts gefunden!") EndIf
Wenn ich das so mit Notepad++ teste, funktioniert es auch mit IDs, die mehr als zweistellig sind... mit AutoIt aber leider nicht... verstehe nicht, warum.
Beisp.: <div class="blabla" id="blabla_blabla_999744" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1415px;top:622px;"><img src="text/bild1_3.png" style="position:relative;bottom:3px;"></div>
PS: Der Editor ist ja mal so was von extrem lahm, da verliert man ja die Lust, überhaupt irgendwas auf AutoIt.de zu schreiben!
-
hinter das erste .* noch ein ?
-
hinter das erste .* noch ein ?
Das funktioniert auch nicht...
AutoIt
Alles anzeigen#include <Array.au3> Local $html = ' <div class="blabla" id="blabla_blabla_999744" style="z-index:1001;width:70px;height:46px;background:url(text/datei1.png) no-repeat;position:absolute;left:1415px;top:622px;"><img src="text/bild1_3.png" style="position:relative;bottom:3px;"></div>"' $aIDs = StringRegExp($html, 'id=".*?([0-9].)+".+src="text/bild1.+"', 3) If IsArray($aIDs) Then _ArrayDisplay($aIDs) Else MsgBox(0, "Nix", "Nichts gefunden!") EndIf
...das liefert mir auch nur "44" und nicht wie erwartet/erwünscht "999744".
-
-
-
Moin!
Falls die ID immer gleich aufgebaut ist, lässt sich das Ganze noch weiter vereinfachen, was auch theoretisch etwas schneller sein sollte, weil weniger überprüft werden muss.Voraussetzung für Aufbau der ID: "irgendwas_irgendwas_nummer", also muss man nur das "fangen", was zwischen dem zweiten Unterstrich und den Anführungszeichen ist.
-
Dann wird bei mir nur ein Wert ausgegeben... "48" - also nur die letzte Zeile.
-
Hi!
Keine Ahnung, was du da machst, aber folgender Code:
AutoIt#include <Array.au3> $html = ClipGet() $aIDs = StringRegExp($html, 'id=".*_(.+)" .+src="text/bild1.+"', 3) If IsArray($aIDs) Then _ArrayDisplay($aIDs) Else MsgBox(0, "Nix", "Nichts gefunden!") EndIf
führt zu folgendem Ergebnis:
[Blockierte Grafik: http://i.imgur.com/GTBi4bg.png]
Immer vorausgesetzt natürlich, dass sich der komplette Beispieltext in der Zwischenablage befindet...
-
- Offizieller Beitrag
Falls die ID immer gleich aufgebaut ist, lässt sich das Ganze noch weiter vereinfachen, was auch theoretisch etwas schneller sein sollte, weil weniger überprüft werden muss.
Nur mal zur Info,
id=".*_(.+)" .+src="text/bild1.+" benötigt 1532 Schritte bis die ID gefunden wird und id=".*?(\d+)".+src="text/bild1.+" nur 220 Schritte, ist also rund 7 mal schneller! -
@Bernd
Gibts da irgendein Tool welches die Anzahl der Schritte ausgibt? -
Nur mal zur Info,id=".*_(.+)" .+src="text/bild1.+" benötigt 1532 Schritte bis die ID gefunden wird und id=".*?(\d+)".+src="text/bild1.+" nur 220 Schritte, ist also rund 7 mal schneller!
Ich entschuldige ich mich für die falsche Info!
Danke für die Korrektur. Jetzt hab ich gesehn, dass das Programm "Regex Buddy" auch eine Debug-Funktion hat. Sehr aufschlussreich.
Ich hätte zB gedacht, dass (.+) schneller ist, als (\d+), weil nicht nach speziellen Typen gesucht, sondern einfach alles gefangen wird, aber offensichtlich ist genau der umgekehrte Fall zutreffend...*edit*
AspirinJunkie: z.B. die Debug Funktion von Regex Buddy -
Ja, stimmt, war mein Fehler... ich hatte die Daten direkt in eine Variable gespeichert und deswegen alle @CRLF durch & _ ersetzt.
-
- Offizieller Beitrag
Gibts da irgendein Tool welches die Anzahl der Schritte ausgibt?
Ich habe es auch mit RegexBuddy gemacht, man kann sich aber z. B. den kostenlosen Regex Coach herunterladen, der hat eine Step-Funktion, damit kann man zumindest schrittweise beobachten wie der Pattern arbeitet.
-
- Offizieller Beitrag
den kostenlosen Regex Coach
Im Gegensatz zum RegexBuddy erkennt der Coach nicht alles, was in AutoIt-RegEx gematcht wird.
Bsp.:
Erkennung ob in einem String ein 4-buchstabiges Palindrom enthalten ist. Wird erkannt vom RegexBuddy und AutoIt, nicht vom Coach.AutoIt$s1 = 'anna' $s2 = 'marianna' ConsoleWrite(StringRegExp($s1, '(.)(.)\2\1') & @CRLF) ConsoleWrite(StringRegExp($s2, '(.)(.)\2\1') & @CRLF)
Edit: Ich sehe gerade, der Grund ist ein anderer. Der Coach bearbeitet nicht automatisch mehrzeilige Eingaben. Den Modus muss man erst setzen, da bin ich vom Buddy etwas verwöhnt.