2016-04-18 17 views
0

Wie dies ändern:Regex - Single oder doppelte Anführungszeichen C#

Regex.Match(value, @"href=\""(.*?)\""",RegexOptions.Singleline); 

also, dass sie href = 'foobar' wählen werden (Single Anführungszeichen ‚) sowie href = "foobar" wählen (Doppel Zitate „??)

+0

Check [diese Frage] (http://stackoverflow.com/questions/30659022/regex-for-extract- url-from-string-failed-wenn-string-enthält-mehrere-double-quo). Die Regex in der Frage sollte für Sie arbeiten. –

+0

Möchten Sie gezielt nur href = 'foobar' auswählen? –

+0

Wenn Sie einen href-Link aus HTML auslesen möchten, lesen Sie den [Schnipsel hier] (http://stackoverflow.com/questions/30629793/c-sharp-regular-expression-for-finding-links-in-a- with-specific-ending) zeigt, wie Sie das mit HtmlAgilityPack tun können. –

Antwort

1

können Sie ein Muster wie folgt verwenden:

href=(["'])(.*?)\1 

diese beliebige Zeichenfolge davon durch eine von einer " oder ' gefolgt href= enthält gefolgt übereinstimmen Anzahl der Zeichen (nicht gierig) gefolgt von demselben Zeichen, das zuvor in Gruppe 1 gefunden wurde. Beachten Sie, dass \1 ein backreference ist.

Beachten Sie auch, dass dies auch den Inhalt Ihres Attribut bedeuten wird als Gruppe in der Gruppe 2 nicht erfasst werden 1.

nun der richtige Weg, um dieses string literal zu entkommen wäre entweder wie folgt aus (reguläre Strings) :

Regex.Match(value, "href=([\"'])(.*?)\\1", RegexOptions.Singleline); 

Oder wie folgt aus (wörtlich Strings):

Regex.Match(value, @"href=([""'])(.*?)\1", RegexOptions.Singleline); 
+0

Das hat funktioniert, vielen Dank! : D –

+0

@SamHoole: Denken Sie daran, dies als akzeptierte Antwort zu markieren, indem Sie auf das grüne Häkchen links neben dem Beitrag drücken. –