私はこのRegExを過去1日ほど使っています。私はそれがうまくいっていると思っています。最初は少し背景。Regex.Matches MatchCollectionに基づいて文字列にコンテンツを置き換えます。
私はユーザーがウェブページを編集できるコンテンツエディタを持っています。彼らは、テキストの書式設定、リンクの追加などを行うことができます。彼らが保存をクリックすると、エディタはコンテンツ(editor.Content)を取得して文字列に入れる機能を提供します。私がしたいことは、リンク(<a>
タグ)を取得し、それらが内部リンクか外部リンクか、そしてそれらがPDFファイルであるかどうかを調べることです。ここで
<a\b[^<>]*href\s*=\s*[\""\'](?<domain>https?:\/\/[^\/\s\'\""]*)*\/?(?<path>\/?[^\s\""]+?)?[[>\""\']
とパスアウト(それは1を持っている場合)。
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
私の質問はこれです...私は値に「いくつかのものを行う」パーツその後、試合を通してIループ...、何がその戻って私 "に取得するための最良の方法だろうeditorContent 'string?私はおそらく、StringBuilderにeditorContentを置き換えて、その上に置き換えの束を行うことができますが、それは非常に効率的ですか?
たとえば、PDFでは、新しいウィンドウ(target = "_ blank")で開くように指定し、外部URLに対してはjavascriptコードをonclick属性に追加します。
いずれかのアイデアが素晴らしいでしょう!
ありがとうございます!
... [これは正規表現と一致しています。](http://stackoverflow.com/a/1732454/5458362)... – Riker