PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RegEx Pattern Hilfe



MaXXeL
19.05.2019, 21:47
Hallo Zusammen,


ich benötige eure Unterstützung bei RegEx.


Ich habe folgenden SoruceCode:


<tbody> <tr><td class="icon"><img class="itemCategory itemCategory_bandage33" src="img/x.gif" title="Bandage||Reincarnate your troops. The amount of troops that will be reincarnated is 2 times of bandages amount in your heros bag. Your hero must survive the battle to use this item."></td><td class="name">25050 x Bandage</td><td class="bids">1</td><td class="silver" title="0 For each unit">31</td><td class="time"><span id="timer1">00:11:20</span></td><td class="bid"><a class="bidButton openedClosedSwitch switchClosed" href="?action=buy&filter=8&a=35337">Change</a></td></tr><tr><td class="icon"><img class="itemCategory itemCategory_bandage33" src="img/x.gif" title="Bandage||Reincarnate your troops. The amount of troops that will be reincarnated is 2 times of bandages amount in your heros bag. Your hero must survive the battle to use this item."></td><td class="name">26720 x Bandage</td><td class="bids">1</td><td class="silver" title="0 For each unit">33</td><td class="time"><span id="timer2">00:11:20</span></td><td class="bid"><a class="bidButton openedClosedSwitch switchClosed" href="?action=buy&filter=8&a=35352">Change</a></td></tr><tr><td class="icon"><img class="itemCategory itemCategory_bandage33" src="img/x.gif" title="Bandage||Reincarnate your troops. The amount of troops that will be reincarnated is 2 times of bandages amount in your heros bag. Your hero must survive the battle to use this item."></td><td class="name">19205 x Bandage</td><td class="bids">1</td><td class="silver" title="0 For each unit">24</td><td class="time"><span id="timer3">00:11:20</span></td><td class="bid"><a class="bidButton openedClosedSwitch switchClosed" href="?action=buy&filter=8&a=35354">Change</a></td></tr><tr><td class="icon"><img class="itemCategory itemCategory_bandage33" src="img/x.gif" title="Bandage||Reincarnate your troops. The amount of troops that will be reincarnated is 2 times of bandages amount in your heros bag. Your hero must survive the battle to use this item."></td><td class="name">16700 x Bandage</td><td class="bids">1</td><td class="silver" title="0 For each unit">21</td><td class="time"><span id="timer4">00:11:20</span></td><td class="bid"><a class="bidButton openedClosedSwitch switchClosed" href="?action=buy&filter=8&a=35364">Change</a></td></tr><tr><td class="icon"><img class="itemCategory itemCategory_bandage33" src="img/x.gif" title="Bandage||Reincarnate your troops. The amount of troops that will be reincarnated is 2 times of bandages amount in your heros bag. Your hero must survive the battle to use this item."></td><td class="name">19205 x Bandage</td><td class="bids">1</td><td class="silver" title="0 For each unit">24</td><td class="time"><span id="timer5">00:11:20</span></td><td class="bid"><a class="bidButton openedClosedSwitch switchClosed" href="?action=buy&filter=8&a=35366">Change</a></td></tr> </tbody>


Und benötige als erstes die Zahl 35337 und die Zahlen die hinter den weiteren Code nach

href="?action=buy&filter=8&a=stehen also in dem Fall: 35352, 35354, 35364, 35366.


Für eure Hilfe bin ich euch dankbar :)


Liebe Grüße

Dailox
19.05.2019, 23:59
(\&(a+)=(\d+))

Dann halt einfach die Zahl nach dem "=" mit substring oder split extrahieren

gORDon_vdLg
20.05.2019, 07:07
Und falls du die Seite noch nicht kennst, hier nochmal als Tipp: https://regex101.com
Da kann man wunderbar mit sowas rumexperimentieren.

BlackHook
20.05.2019, 11:30
=(\d{3,})

Damit hast du genau das was du brauchst

Dailox
20.05.2019, 14:26
Damit hast du genau das was du brauchst

Kann man machen wenn man sicher gehen kann dass in dem HTML bspw keine Mathe Aufgaben gelöst werden, wa.

MaXXeL
20.05.2019, 18:35
Guten Abend Zusammen,

vielen Dank für die unglaublich schnelle Hilfe! :D

@gORDon_vdLg: Danke dir :) Die Seite nutze ich auch zum testen von pattern.

@BlackHook: Vielen Dank, bei dem "Code-Ausschnitt" hat das super funktioniert nachdem ich den kompletten Quellcode geladen hatte leider nichtmehr.

@Dailox: Viieeelen Dank :) hat auf Anhieb funktioniert, bin somit echt ein Stück weiter gekommen.

Ich danke euch allen für die super Hilfe und vorallem so schnell. Werde bestimmt in nächster Zeit nochmal auf schwierige (für mich) pattern stoßen.

Beste Grüße

Dailox
21.05.2019, 23:50
Gar kein Ding :) Ich empfehle aber trotzdem einen HTML-Parser, wenn du noch mehr mit dem HTML machst.
Regex ist wirklich überhaupt nicht dafür gedacht, um HTML zu parsen. Für kleine Sachen schon ok, aber grundsätzlich ist ein Parser besser dafür geeignet.

MaXXeL
25.05.2019, 17:20
Hey,

ich denke ich werde in Zukunft öfter brauchen. Um weitere Dinge auszulesen wie Timestamps, oder bestimmte ID´s die sich bei jedem Seitenaufruf ändern.
Hast du Erfahrung mit einem bestimmt HTML-Parser? Oder gibt es da keinen bestimmten? Das ist komplettes Neuland für mich.

Vielen Dank :)

Dailox
26.05.2019, 19:26
Hey,

ich denke ich werde in Zukunft öfter brauchen. Um weitere Dinge auszulesen wie Timestamps, oder bestimmte ID´s die sich bei jedem Seitenaufruf ändern.
Hast du Erfahrung mit einem bestimmt HTML-Parser? Oder gibt es da keinen bestimmten? Das ist komplettes Neuland für mich.

Vielen Dank :)

Moin,

kurz gesagt ist Regex nicht für HTML geeignet, weil Regex keine Strukturen erkennen kann.
Siehe:
https://de.wikipedia.org/wiki/Deterministischer_endlicher_Automat#Regulärer_Aus druck
https://de.wikipedia.org/wiki/Hypertext_Markup_Language
https://stackoverflow.com/questions/6751105/why-its-not-possible-to-use-regex-to-parse-html-xml-a-formal-explanation-in-la

Edit:
Ein HTML Parser für VB.NET wäre bspw:
https://html-agility-pack.net

oder auch das inbuilt mshtml.