Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

String in anderem String mittels Jokerzeichen suchen (Werte/Attribute in HTML-Code)
arnoe
myCSharp.de - Member



Dabei seit:
Beiträge: 18
Herkunft: Ostfriesland

Themenstarter:

String in anderem String mittels Jokerzeichen suchen (Werte/Attribute in HTML-Code)

beantworten | zitieren | melden

Hallo,
ich habe folgendes Problem, nämlich möchte ich den input type, den Namen, sowie den Namen der class von einem Formular auf einer HTML oder PHP seite herausbekommen.
Dafür durchsuche ich den Quelltext, den ich vorher mit einer anderen Methode heruntergeladen habe mittels folgendem Code (habe ich nicht selber geschrieben):


string strRegExPatten = "<\\s*input.*?name\\s*=\\s*\";(?<Name>.*?)\".*?value\\s*=\\s*\";(?<Value>.*?)\".*?>";
Regex reg = new Regex(strRegExPatten, RegexOptions.Multiline);
MatchCollection mc = reg.Matches(strPage);
string strTemp = "";
foreach (Match m in mc)
{
strTemp = strTemp + m.Groups["Name"].Value + "=" + m.Groups["name1"].Value + " ";
strTemp += " | ";
}
Das was in "strRegExPatten" steht funktioniert und liefert die Infos vom Submit Button, jedoch brauche ich die Infos vom Usernamen- und Passwortformular aus dem Quelltext.
Diese sehen folgendermaßen aus:
<input type="text" name="???" class="formular" ...>
Jedoch weiß ich nicht wie man das mit den "Jokerzeichen" schreibt wie oben.

Ich wäre für jeden Tipp dankbar, habe schon den ganzen Vormittag im Internet gesucht :(
Mfg Arnoe
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von arnoe am .
Ne oder?
Oh doch xD
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

Hallo arnoe,

ich habe deine Frage ehrlich gesagt nicht ganz verstanden ...
Trotzdem ein Hinweis: Du solltest ein @ vor den String der Variable strRegExPatten setzen, sodass du die Backslashes nicht zusätzlich escapen musst. Das erhöht die Lesbarkeit des regulären Ausdrucks drastisch:

string strRegExPatten = "<\s*input.*?name\s*=\s*\";(?<Name>.*?)\".*?value\s*=\s*\";(?<Value>.*?)\".*@?>";

m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
private Nachricht | Beiträge des Benutzers
arnoe
myCSharp.de - Member



Dabei seit:
Beiträge: 18
Herkunft: Ostfriesland

Themenstarter:

beantworten | zitieren | melden

Hallo m0rius,
danke für den Hinweis.
Zum Verständnis -
Ich möchte in dem String strPage(mehrere hundert Zeilen groß) suchen ob der String strRegExPatten darin irgendwo vorkommt und wie die Variablen heißen, also die Teile des Strings die ich nicht kenne und wofür das / die Jokerzeichen gebraucht werden.
Ich hoffe das es nun etwas besser nachzuvollziehen ist, was mein Problem ist. :)
Mfg Arnoe
Ne oder?
Oh doch xD
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

Hallo arnoe,

zum Auslesen des benannten Platzhalters Name verwendest du doch schon m.Groups["Name"].Value (und analog m.Groups["Value"].Value) für jeden Treffer – funktioniert der Code nicht wie erwartet?

m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
private Nachricht | Beiträge des Benutzers
arnoe
myCSharp.de - Member



Dabei seit:
Beiträge: 18
Herkunft: Ostfriesland

Themenstarter:

beantworten | zitieren | melden

Hallo m0rius,
mit dem Code aus meinem Anfangspost bekomme ich die daten für die Buttons aus dem Quelltext holt: <input type="submit" name="submit" value="Einloggen" class="button"> Die Ausgabe dieses Codes lautet submit=Einloggen" class="button | submit=Jetzt suchen" class="button |
Nun will ich aber einen zweiten, ich will mal sagen "Filter" haben der mir die Variablen für: <input type="text" name="login" class="formular" ausgibt, die Ausgabe sollte in etwa so aussehen : text=login class=formular wobei das login nicht unbedingt login sein muss sondern nur das formular festgelegt ist.
Und dafür muss man denk ich die "Jokerzeichen" wie .*? anders setzen aber da hab ich wie gesagt noch nichts vernünftiges im Internet gefunden
Mfg arnoe
Ne oder?
Oh doch xD
private Nachricht | Beiträge des Benutzers
xxxprod
myCSharp.de - Experte

Avatar #avatar-2329.gif


Dabei seit:
Beiträge: 1420
Herkunft: Österreich\Wien

beantworten | zitieren | melden

Ich würd den Ausdruck so ändern:
<\s*input(?:\s+(?<Key>\w+)\s*=\s*"(?<Value>[^"]*)")*\s*>

Damit bekommst du alle Key-Value Pairs aus deinem Html Tag und kannst dann im Code selber deine Logik implementieren als sie umständlich in Regex zu Lösen.

Lg XXX
private Nachricht | Beiträge des Benutzers
arnoe
myCSharp.de - Member



Dabei seit:
Beiträge: 18
Herkunft: Ostfriesland

Themenstarter:

beantworten | zitieren | melden

Danke für die schnelle Antwort.
Ich habe gerade das Tool "Rad Software Regular Expression Designer" gefunden, das hat mich schon um einiges weitergebracht. Denn jetzt verstehe ich auch erst wirklich wie das alles funktioniert. Nun hab ich deinen Ausdruck in dem Programm eingegeben und den kompletten Quelltext. Das Ergebnis ist, das er das alles findet wie ich es haben will in meinem C# Programm jedoch liefert er nur die letzten Werte der "Gruppe". Ich hab auch schon geguckt ob es eine Möglichkeit gibt den ersten oder zweiten Wert auszulesen, jedoch erfolglos.
Die Ausgabe lautet immernoch
m.Groups["Key"].Value + "=" + m.Groups["Value"].Value + " ";
Mfg arnoe
Ne oder?
Oh doch xD
private Nachricht | Beiträge des Benutzers
xxxprod
myCSharp.de - Experte

Avatar #avatar-2329.gif


Dabei seit:
Beiträge: 1420
Herkunft: Österreich\Wien

beantworten | zitieren | melden

Schau mal unter Groups["..."].Captures nach.

Lg XXX
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 928

beantworten | zitieren | melden

Ich würde dir für das Auslesen von HTML Code die htmlagilitypack Library empfehlen. Damit ist das deutlich eleganter zu lösen.
Again what learned...
private Nachricht | Beiträge des Benutzers