我需要找到一種方法來刪除font-family樣式中圍繞字體名稱的單引號標記。解析html樣式屬性中的引號標記
所以這...
<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>
我只關心由雙引號包圍樣式屬性。如果它們被單引號包圍,那麼我知道字體名稱不會被單引號包圍。
我必須在C#中執行此操作,因爲處理此Html的應用程序正在作爲Windows服務運行。
我知道通常使用正則表達式來解析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;"
我想要做的就是找到這樣的兩場比賽...
style="font-family: 'Verdana'; color: #0000ff; font-size: 10pt;"
style="font-family: 'Arial';"
,並作爲一個新手,正則表達式的傢伙,我似乎無法找到合適的組合。
或者更具體一些,我需要一種方法來查找單引號包圍的字體族中的值,然後從該值中刪除單引號。
有人可以幫我拿出適當的正則表達式嗎?
在這種情況下是否有更好的正則表達式替代方案?
「我只關心雙引號包圍的樣式屬性,如果它們被單引號包圍,那麼我知道字體名稱不會被單引號括起來。」 這是什麼意思? – krillgar
如果html看起來像這樣style ='而不是style =「,那麼我知道字體名稱不會被單引號包圍。 –