0
我試圖創建一個.NET正則表達式來解析CSS字體聲明,這需要下面的表格中提取字體系列列表:正則表達式從CSS字體聲明
font: italic small-caps bold xx-small 3.0em "Times New Roman", Times, serif;
根據CSS規範,所有聲明值的元素是可選的,並且我成功創建了與前五個元素匹配的Regexes(在他們所有不同的允許表單中),但是我無法創建一個匹配字體名稱列表的正則表達式,屬性值中的最後一個元素。我不需要識別字體名稱列表中的各個元素;我只是想匹配整個列表。
字體名稱列表是逗號分隔的列表(元素之間具有可選的空白),列表中的每個成員都是單引號名稱或用引號括起來的多個單詞。
到目前爲止,我想出了下面的表達式...
(?<NAME_LIST>(?<QUOTED_NAME>"[\w ]+")|(?<SIMPLE_NAME>\w+)(?:,\s*(?<QUOTED_NAME>"\w ]+")|(?<SIMPLE_NAME>\w+))*)
...但它的列表中的每個成員單獨匹配,而不是匹配整個列表。
任何想法,將不勝感激。
感謝,
添
感謝您的回答。我接受了它,因爲它確實匹配了字體名稱的完整列表,這比我自己實現的要多。然而,我誤導了你一點...分號不在我的輸入字符串中,因爲我實際上只是解析聲明的值部分。我已經從你的模式中刪除了分號,它仍然正確匹配。我可能會看到這種用法的任何副作用?再次感謝。 – 2010-07-08 15:46:49
@Tim:是的,它不會匹配尾部字體的名字,我才發現我的正則表達式,我以前沒有注意到另一個問題(在開始處匹配多餘的東西,如果第一字體名稱沒有報價)所以我現在正在修復它。 – JAB 2010-07-08 17:41:19
好,更新。 (不得不介入從我的電腦走了一下就可以工作時。) – JAB 2010-07-08 18:09:24