ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
631
631
EMPFEHLEN
-
Hi,
ich hab einen String aus dem ich gerne bestimmte Teile mit Regex auslesen wuerde.
Leider variiert der String und ist nicht immer gleich lang. Ist dies dennoch moeglich.
Beispielstring(die Zahlen nach "post_message_" sind manchmal mehr, weniger und unterschiedlich...):
<div id="post_message_1935262">
<blockquote class="postcontent restore">
TEXT[<-ALLES WAS HIER STEHT SOLL AUSGELESEN WERDEN]
</blockquote>
</div>
Danke im Vorraus!
Edit: Falls das geht waere es super wenn der blockquote Teil auch nicht sein muss (er kommt auch nur manchmal vor) aber kann sodass ich kein if statement brauche...Geändert von majoko (28.03.11 um 19:25 Uhr)
-
So ungefähr, nicht getestet.Code :
1 2 3 4 5 6
Match m = Regex.Match(meinString, "id=\"post_message_(?'Zahl'[0-9]+)\""); if(m.Success && m.Groups["Zahl"].Sucess) { int ih; int TryParse( m.Groups["Zahl"].Value, out ih); }
Für Regex Anfänge: http://www.traum-projekt.com/forum/7...pressions.html da hab ich die Anfänge gelernt.
Der Rest geht dann über msdn: http://msdn.microsoft.com/de-de/libr...=VS.80%29.aspx
-
Hi,
danke hab den Teil jetzt hingekriegt aber leider ergibt sich ein neues Problem:
Und zwar hab ich das Ende des Strings bisher mit "</div>" festgelegt wodurch der String allerdings abegkuerzt wird wenn der gesuchte Teil selber "</div>" beinhaltet.
Wenn ich also folgedenen String habe:
bekomme ich nur:HTML-Code:<div id="post_message_123456789"> TEXT ZUM AUSLESEN <div> MEHR TEXT ZUM AUSLESEN </div> NOCH MEHR TEXT ZUM AUSLESEN </div>
und der letzte Teil wird ausgelassen.HTML-Code:TEXT ZUM AUSLESEN <div> MEHR TEXT ZUM AUSLESEN
Wie kann ich das Ende flexibel gestalten?
Bisheriger Code:
Code csharp:1 2 3 4 5 6 7 8
Match match = Regex.Match(threadHTML, "<div id=\"post_message_[0-9]*\">"); int startIndex = match.Index + match.Length; int endIndex = threadHTML.IndexOf("</div>", startIndex); string String= threadHTML.Substring(startIndex, endIndex - startIndex); String = String.Trim(); MessageBox.Show(String);
-
Hallo,
Wenn div immer dein Ende ist, könntest du von hinten anfangen nach "</div>" zu suchen.
Code csharp:1
int endIndex = threadHTML.LastIndexOf("</div>");
MfG Turri
PS: Wenn ich helfen konnte, würde ich mich über ein Danke oder eine positive Bewertung freuen. :-)
-
Kein Problem mit Regulären Ausdrücken.
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
using System; using System.Text.RegularExpressions; class Program { static void Main(string[] args) { string str = "<div id=\"post_message_1935262\"><blockquote class=\"postcontent restore\">TEXT[<-ALLES WAS HIER STEHT SOLL AUSGELESEN WERDEN]</blockquote></div>"; string pattern = "^<div id=\"post_message_[0-9]+\">(.*)</div>"$; Regex rx = new Regex(pattern, RegexOptions.Singleline); Match m = rx.Match(str); if(m.Groups.Count > 1) { Console.WriteLine(m.Groups[1].Value); } } }
Funktioniert für beide deine Beispiele.
Du solltest gänzlich auf die String-Operationen (IndexOf, Substring) etc. verzichten, wenn du ohnehin Reguläre Ausdrücke verwendest.Geändert von CPoly (30.03.11 um 10:18 Uhr)
-
Du könntest dir meinen Wikiparser mal per Reflector anschauen, da suche ich unter anderem auch nach HTML Tags, ev. hilft es dir ja was.
Hatte schon längst vor den Code mal zu veröffentlichen, aber der liegt aufm anderen Rechner und da ist die Graka kaputt. Einer der Sicherungs USB's liegt im Auto und wo ich den anderen USB Stick hab hab ich vergessen.
http://wikiparser.iv-interactive.de
Bin mir nur nicht mehr sicher wie genau ich mit HTML in HTML war.
Ähnliche Themen
-
Horizontale Navigation <li> floaten ohne feste Breite IE5.x & IE6.x
Von rflx im Forum CSSAntworten: 5Letzter Beitrag: 06.05.09, 13:53 -
DIV vertikal zentrieren ohne feste Größe
Von Eiszwerg im Forum CSSAntworten: 8Letzter Beitrag: 17.09.08, 17:13 -
Div ohne feste Größe zentrieren
Von Avariel im Forum CSSAntworten: 2Letzter Beitrag: 26.06.05, 21:19 -
[C] Datei einlesen ohne feste Bezeichnung
Von darkfire00 im Forum C/C++Antworten: 6Letzter Beitrag: 26.12.04, 23:19 -
Feste Fenstergrösse aber ohne Link...
Von derwuschel im Forum HTML-EditorenAntworten: 2Letzter Beitrag: 08.06.03, 19:03





Zitieren


Login





