Ich habe an dieser RegEx für den letzten Tag oder so gearbeitet, und ich denke, ich habe es ausgearbeitet, damit es die Daten zurückgibt, die ich möchte. Zuerst ein kleiner Hintergrund.Ersetzen Sie Inhalt in einer Zeichenfolge basierend auf Regex.Matches MatchCollection
Ich habe einen Inhaltseditor, mit dem Benutzer Webseiten bearbeiten können. Sie können Text formatieren, Links hinzufügen, etc .. Standard Content-Editor Zeug. Wenn sie auf Speichern klicken, bietet der Editor die Möglichkeit, den Inhalt (editor.Content) abzurufen und in eine Zeichenfolge zu schreiben. Ich möchte Links (<a>
Tags) erhalten und herausfinden, ob es sich um interne oder externe Links handelt und ob es sich um PDF-Dateien handelt.
Hier ist die Expression ich habe kommen mit:
<a\b[^<>]*href\s*=\s*[\""\'](?<domain>https?:\/\/[^\/\s\'\""]*)*\/?(?<path>\/?[^\s\""]+?)?[[>\""\']
Damit ich bin in der Lage, die Domain zu trennen (wenn es einen hat) und den Pfad aus. Dann habe ich eine Schleife durch die passende ...
dim matchColl as MatchCollection = Regex.Matches(editorContent, regExString)
For Each m as Match in matchColl
If m.Groups("domain").value <> myInternalDomain and m.Groups("domain").value <> "" then
'this is an external domain... do some stuff
End If
If m.Groups("path").value.EndsWith(".pdf") then
'it is a pdf, do some other stuff...
End if
Next
Meine Frage ist ... die Teile, wo ich tun einige Sachen 'zu den Werten, was wäre der beste Weg sein, dass wieder zu bekommen in meinem' editorContent 'string? Ich könnte den EditorContent wahrscheinlich in einen StringBuilder einfügen und eine ganze Reihe von Ersetzungen darauf machen, aber ist das sehr effizient?
So, zum Beispiel, mit der PDF, möchte ich angeben, dass es in einem neuen Fenster geöffnet (target = "_ blank") und für die externe URL, fügen Sie einige Javascript-Code in das onclick-Attribut.
Irgendwelche Ideen wären großartig!
Danke!
... [Dies ist Regex passenden HTML.] (Http://Stackoverflow.com/a/1732454/5458362) ... – Riker