2009-07-12 7 views
0

Das ist eine ziemlich einfache Frage, aber ich bin etwas ratlos.Capturing "xxxxxxxxxx"

Ich erfasse Abschnitte des Textes, die "xxxxxxxxxx" entsprechen. Es funktioniert gut.

string pattern = "(?<quotePair>\"[^/\"]*\")"; 

Jetzt möchte ich ein neues Muster machen „xxxxxxxxxx“ einzufangen ... Ich benutze:

string pattern2 = "(?<lrquotePair>“[^/\"“]*”)"; 

Aus irgendeinem Grund das zweite Muster nichts fangen. Was vermisse ich?

+0

funktioniert gut in Python, wahrscheinlich ein Sprachproblem dann, welche Sprache verwenden Sie? – cobbal

+0

Ich benutze C# .NET –

Antwort

3

Ihre Muster sind komplizierter als die, die Sie beschreiben - zum Beispiel stimmt die erste nicht mit "foo/bar" überein, und die zweite stimmt nicht mit “foo/bar” oder “foo"bar” überein. Vielleicht fällt Ihre Eingabe in eine dieser Kategorien?

Wenn es ein Codierungsproblem gibt, ist es nicht mit der Regex - .NET regexes unterstützt Unicode einfach gut. Aber es könnte sein, dass Sie den Text nicht in der richtigen Kodierung gelesen haben - versuchen Sie es auszudrucken und überprüfen Sie, ob die originalen “” Anführungszeichen immer noch da sind. Insbesondere wenn Sie die Klasse StreamReader mit einem Konstruktor mit einem Argument (oder File.OpenText) verwenden, wird standardmäßig die UTF-8-Codierung für die Eingabe verwendet. Dies ist möglicherweise nicht das, was Sie dort tatsächlich haben.

+0

Danke Pavel. Ja, ich wollte, dass sie diese besonderen Details in sich tragen. Das ist nicht das Problem. Ich kann das gleiche Stück Text nehmen und nur "nach" und "nach" umschalten, und plötzlich wird es nicht zusammenpassen. –

+0

Ich bin ziemlich müde. Scheint, den zweiten Absatz verpasst zu haben. Ich denke, das könnte mein Problem sein. Ich verwende HtmlAgilityPack, um einen StringWriter auszugeben. Jetzt verstehe ich, warum es beim Ausdrucken diese Charaktere in ein Kauderwelsch verwandelt. –

+0

Die Webseiten, mit denen ich arbeite, sind charset = "ISO-8859-1", die Codierung von StringWriter ist UnicodeEncoding. Ich lese die Dateien in HtmlAgilityPack und gebe sie dann an einen StringWriter aus. Könnte das das Problem sein? Wie kann ich es korrigieren? –

1

Encoding might be getting in your way. Versuchen mit \u0093 und \u0094 statt.

+0

Danke, ich vermutete so etwas. Lass mich den Link anschauen. –

+0

Ich habe es gerade mit versucht string pattern2 = "(? \ u0093 [^/\" "] * \ u0094)"; Es schien nicht zu funktionieren, aber hoffentlich bin ich nur müde ... Ist Diese Regex korrekt mit Ihren Augen? –

+0

Manchmal wünschte ich wirklich, sie hätten gemacht Unicode weniger Geist Warping ... –

0

Es ist nichts falsch mit Ihrem zweiten Regex. Sind Sie sicher, dass die Eingabezeichenfolge korrekt ist? Bei den Zeichen, die Sie abgleichen möchten, handelt es sich nicht um einfache ASCII-Zeichen. Möglicherweise liegt also ein Problem mit einer nicht übereinstimmenden Zeichencodierung vor.