Deine Variable checksite enhält den Text "%A_Temp%\frakinfo.html" - wobei %A_Temp% nicht durch den Pfad zu deiner Datei ersetzt wird.
Dein RegExMatch erwartet aber, den Dateiinhalt von der Datei die du versuchst zu erwähnen.
Du musst daher vor dem RegExMatch über
FileRead noch den Inhalt der Datei in eine Variable einlesen.
Der 2. Punkt ist der, dass Anführungszeichen nicht mit %% funktionieren. Bei dem sogenannten Ausdrucksmodus ist es notwendig anders zu arbeiten.
Hier ist alles ein Ausdruck d.h. eine Variable oder eine Rechnung o. ä. von daher müssen diese nicht mehr extra markiert werden - Text hingegen schon.
2 Teilausdrücke ( wie in unserem Beispiel eine Variable und ein Textstück ) werden automatisch zu einem längeren Text zusammengefügt:
checksite := A_Temp "\frakinfo.html" wäre die korrekte Zeile gewesen.
Zudem wirst du selbst wenn du die Datei richtig öffnest Probleme mit dem RegExMatch bekommen. Ein RegExMatch ist normalerweise Gierig - das Bedeutet, dass jedes Element welches unterschiedlich groß sein kann, versucht möglichst groß zu sein.
Im Klartext, bedeutet, das für dein RegExMatch, dass du nicht einen Namen zurückgeliefert bekommst sondern alles von dem Anfang des ersten Namens bis zum Ende des letzten Namens.
Um die Gier eines * zu deaktivieren reicht es ein ? dahinter zu setzen.
https://regex101.com/r/LzlBpb/1 vs.
https://regex101.com/r/x8QRcU/1
Das zweite Problem bei deinem RegExMatch liegt bei der Ausgabevariable. Die Ausgabevariable
checkname enthält den gesamten Text der gefunden wurde, nicht nur den Teil innerhalb der Klammer.
Um den Inhalt der ersten Klammer zu erhalten musst du die variable checkname1 verwenden.
Hier ein Testscript mit allen Veränderungen:
Code: Select all
checksite := A_Temp . "\frakinfo.html"
URLDownloadToFile, https://nes-newlife.de/fraction/member/18, %checksite%
FileRead,checksitetext, %checksite%
FileDelete, %checksite%
if (RegExMatch(checksitetext, "><b>(.*)</b></a></td>", checkname)) {
Msgbox checkname: "%checkname%" vs. checkname1: "%checkname1%" ;Du musst hier checkname1 verwenden um die erste Klammer zu erhalten
}