font-familyスタイルのフォント名を囲む一重引用符を削除する方法を見つける必要があります。
したがって、この...
<span style="font-family: 'Verdana'; color: #0000ff; font-size: 10pt;"><span style="font-family: 'Arial';"><strong>2.0: Scope</strong></span></span>
これに変わるだろう...
<span style="font-family: Verdana; color: #0000ff; font-size: 10pt;"><span style="font-family: Arial;"><strong>2.0: Scope</strong></span></span>
二重引用符で囲まれたスタイル属性のみが気になります。それらが一重引用符で囲まれている場合、フォント名は一重引用符で囲まれないことがわかります。
このHTMLを処理するアプリケーションはWindowsサービスとして実行されているため、C#内でこれを行う必要があります。
通常、正規表現を使用してHtmlを解析することはできませんが、非常に特殊なケースを探しているので、これが例外になることを期待していました。私はHtmlパーサーにアクセスできますが、正規表現に比べて非常に遅いです。
これが私が思いつくことができる最高のものです...
var html = "<span style=\"font-family: 'Verdana'; color: #0000ff; font-size: 10pt;\"><span style=\"font-family: 'Arial';\"><strong>2.0: Scope</strong></span></span>";
var newHtml = Regex.Replace(html, "style(.*)=(.*)\"(.*)font-family:(.*?)[\">]", m => m.Value.Replace("'", ""));
これは正しい目標を達成しますが、実際には正しい一致を見つけられません。これと一致します...
style="font-family: Verdana; color: #0000ff; font-size: 10pt;"><span style="font-family: Arial;"
私がやりたいのは、このような2つの一致を見つけることです...
style="font-family: 'Verdana'; color: #0000ff; font-size: 10pt;"
style="font-family: 'Arial';"
初心者の正規表現の人である私は、正しい組み合わせを見つけることができないようです。
または、より具体的には、一重引用符で囲まれたフォントファミリ内の値を見つけて、その値から一重引用符を削除する方法が必要です。
誰かが私が適切な正規表現を思い付くのを手伝ってもらえますか?
このシナリオでより適切に機能する正規表現の代替手段はありますか?