利用ASP.NET的Regex取出.css檔裡的樣式名稱
最近同事在問有沒有可以讀取css檔的.net framework 2.0的類別可以用....
我也不知道有沒有..但有找到一些open source的API可以用,是java的
也找到了一個用正規表達式的方法...取出css檔裡的所有樣式名稱..分享給大家呀..
c#範例:
01
using System;
02
using System.Data;
03
using System.Configuration;
04
using System.Collections;
05
using System.Web;
06
using System.Web.Security;
07
using System.Web.UI;
08
using System.Web.UI.WebControls;
09
using System.Web.UI.WebControls.WebParts;
10
using System.Web.UI.HtmlControls;
11
using System.Text.RegularExpressions;
12
13
public partial class CSSRegex : System.Web.UI.Page
14
{
15
protected void Page_Load(object sender, EventArgs e)
16
{
17
//假設下面是css檔的內容
18
string css = @"
19
20 .text
21
{ /*font-size: 1em;*/
22
color: #0099CC;
23
font-weight: bold;
24
text-decoration: none;
25
list-style-type: decimal;
26
line-height: 1.8em;
27
}
28
29
.h0 {
30
font-size: 1em;
31
color: #009966;
32
text-decoration: none;
33
font-weight: bold;
34
}
35
.h1 {
36
font-size: 1em;
37
color: #669900;
38
text-decoration: none;
39
font-weight: bold;
40
}
41
.h2 {
42
font-size: 1em;
43
color: #FF9933;
44
text-decoration: none;
45
font-weight: bold;
46
}
47
48 ";
49
50 //這行是取出CSS樣式名稱的正規表達式
51
MatchCollection arr = Regex.Matches(css, @"(?<!url\s*\(.*)(\.[-]?[_a-zA-Z][_a-zA-Z0-9-]*|[^\0-\177]*\\[0-9a-f]{1,6}(\r\n[ \n\r\t\f])?|\\[^\n\r\f0-9a-f]*)");
52
53 foreach (Match str in arr)
54
{
55
Response.Write(str.Value + "<br/>");
56
}
57
58
}
59
}
60
using System;02
using System.Data;03
using System.Configuration;04
using System.Collections;05
using System.Web;06
using System.Web.Security;07
using System.Web.UI;08
using System.Web.UI.WebControls;09
using System.Web.UI.WebControls.WebParts;10
using System.Web.UI.HtmlControls;11
using System.Text.RegularExpressions;12

13
public partial class CSSRegex : System.Web.UI.Page14
{15
protected void Page_Load(object sender, EventArgs e)16
{17
//假設下面是css檔的內容18
string css = @"19

20 .text
21
{ /*font-size: 1em;*/22
color: #0099CC;23
font-weight: bold;24
text-decoration: none;25
list-style-type: decimal;26
line-height: 1.8em;27
}28

29
.h0 {30
font-size: 1em;31
color: #009966;32
text-decoration: none;33
font-weight: bold;34
}35
.h1 {36
font-size: 1em;37
color: #669900;38
text-decoration: none;39
font-weight: bold;40
}41
.h2 {42
font-size: 1em;43
color: #FF9933;44
text-decoration: none;45
font-weight: bold;46
}47

48 ";
49

50 //這行是取出CSS樣式名稱的正規表達式
51
MatchCollection arr = Regex.Matches(css, @"(?<!url\s*\(.*)(\.[-]?[_a-zA-Z][_a-zA-Z0-9-]*|[^\0-\177]*\\[0-9a-f]{1,6}(\r\n[ \n\r\t\f])?|\\[^\n\r\f0-9a-f]*)");52

53 foreach (Match str in arr)
54
{55
Response.Write(str.Value + "<br/>");56
}57

58
}59
}60
執行結果:
using