C# Regex: Wie zum extrahieren von Zeichenfolgen in Anführungszeichen
An ich habe folgenden string:
<script language="javascript"> var Liga = new Array( "Fußball","Deutschland - 2. Bundesliga","38542195","102","24 Mai 2009 14:00","24 Mai 2009 14:00","1X2","1","0" ); var Spiele = new Array( "125","1.FC Nürnberg - TSV 1860 München","24 Mai 2009 14:00","Sun, 24.05.09 14:00","1/1.40/4.10/6.40|-","||||","1/1.90/3.50/2.20/0:1","1/1.05/2.20/1.18|-","1/2.00||1.60|2.5","1/3.40/3.20/1.60/2","1/1.70/2.50/5.50|-","||||-","1", "126","FC Ingolstadt 04 - TuS Koblenz","24 Mai 2009 14:00","Sun, 24.05.09 14:00","1/3.60/2.80/2.00|-","||||","||||:","1/1.68/1.25/1.26|-","1/1.90||1.70|2.5","1/3.10/3.10/1.70/2","1/3.60/2.10/2.45|-","||||-","1", "127","FC St. Pauli 1910 - FSV Frankfurt","24 Mai 2009 14:00","Sun, 24.05.09 14:00","1/2.50/2.95/2.60|-","||||","||||:","1/1.41/1.44/1.28|-","1/2.00||1.60|2.5","1/3.40/3.20/1.60/2","1/2.95/2.00/3.05|-","||||-","1", "128","MSV Duisburg - VfL Osnabrück","24 Mai 2009 14:00","Sun, 24.05.09 14:00","1/2.30/3.60/2.40|-","||||","||||:","1/1.35/1.51/1.27|-","1/2.10||1.55|2.5","1/3.60/3.20/1.55/2","||||-","||||-","1", "129","FSV Mainz 05 - SC Rot-Weiss Oberhausen","24 Mai 2009 14:00","Sun, 24.05.09 14:00","1/1.40/3.80/7.00|-","||||","1/1.95/3.50/2.50/0:1","1/1.05/2.50/1.18|-","1/2.00||1.60|2.5","1/3.40/3.20/1.60/2","1/1.70/2.30/5.50|-","||||-","1", "130","Rot-Weiss Ahlen - SpVgg Greuther Fürth","24 Mai 2009 14:00","Sun, 24.05.09 14:00","1/2.55/3.20/2.55|-","||||","||||:","1/1.42/1.42/1.28|-","1/2.10||1.55|2.5","1/3.60/3.20/1.55/2","1/3.00/2.00/3.00|-","||||-","1", "131","SC Freiburg - 1.FC Kaiserslautern","24 Mai 2009 14:00","Sun, 24.05.09 14:00","1/1.75/3.25/4.20|-","||||","||||:","1/1.17/1.91/1.24|-","1/2.10||1.55|2.5","1/3.60/3.20/1.55/2","1/2.30/2.10/3.80|-","||||-","1", "132","SV Wehen Wiesbaden - FC Hansa Rostock","24 Mai 2009 14:00","Sun, 24.05.09 14:00","1/5.00/3.70/1.55|-","||||","||||:","1/2.23/1.09/1.23|-","1/1.90||1.70|2.5","1/3.10/3.10/1.70/2","1/4.50/2.25/2.00|-","||||-","1", "133","TSV Alemannia Aachen - FC Augsburg","24 Mai 2009 14:00","Sun, 24.05.09 14:00","1/1.60/3.45/5.10|-","||||","||||:","1/1.11/2.13/1.23|-","1/2.10||1.55|2.5","1/3.60/3.20/1.55/2","1/2.10/2.20/4.30|-","||||-","1" ); var events = showLeague(Liga, Treffer); hasEvents = hasEvents + Veranstaltungen; </script>
Was ich versuche zu tun ist, um eine Analyse der Teil wo es heißt "var entspricht", und extrahieren Sie nichts enthielt, zwischen zwei Anführungszeichen. Daher das gewünschte Ergebnis sollte ein array mit:
(0): 125 (1): 1.FC Nürnberg - TSV 1860 München (2): 24 Mai 2009 14:00 etc.
NB: ich sah eine ähnliche Frage beantwortet, aber nach einige Zeit war ich nicht in der Lage, damit es funktioniert. Danke!
- Duplizieren stackoverflow.com/questions/694344/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte verwenden Sie keine regulären Ausdrücke für das, CSV sollte behandelt werden durch einen parser. Sie tun dies mit regex ist die langsamste und die meisten Fehler-anfällig Methode von allen.
Hier ist ein ready-to-use-parser: codeproject.com: A Fast CSV Reader. Andere Beispiele können leicht gefunden werden, wie die Implementierung eines CSV-parser ist eine beliebte Fingerübung.
Sie können auch den OLE DB built-in-parser: C# Tutorial - Mit Dem Integrierten DB-CSV-Parser.
Bei deinem Beispiel, würde ich
IndexOf()
schneiden Sie die Schnur zwischen"var matches = new Array("
und");"
, und behandeln Sie das Ergebnis als CSV-string.Versuchen Sie Folgendes:
Das erste Muster extrahiert die matches-array und die zweite packt alle angegebenen Werte im array
Ich würde verwenden Sie die folgende Regex-Muster, das auf die gesamte Array-Inhalt :
... und dann führen Sie einen String.Aufgeteilt auf die Komma-Trennzeichen.
Ich glaube, Sie müssen entfernen, die " am Anfang und am Ende und split durch
","
Wenn Sie wirklich wollen, um reguläre Ausdrücke verwenden, versuchen Sie so etwas wie dieses:
Das sollte für Sie die Feld-Wert-Liste. Dann einen anderen regulären Ausdruck bekommen können Sie die einzelnen Werte:
Aber wieder: die Verwendung regulärer Ausdrücke ist in diesem Fall nicht effizient. Eine einfache CSV-parser wird die Art und Weise besser.
Wenn Sie eine einzige Liste für alle Linien zusammen verwenden:
Wenn Sie möchten, um eine separate Liste pro Zeile haben, sollten Sie eine Liste von Zeilen, und in jeder Liste sollten Sie über eine Liste von zitierten text. Der folgende code tun:
Aufrufende code für Ihre Bequemlichkeit: