帮忙修改下这条正则表达式

scoun 2011-01-08 07:49:58

Regex regCss = new Regex(@"<link\b[^<>]*?\bhref[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<cssUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);


这条正则表达式本来是获取 <img标签里的url..
我把它改了,想获取css的路径.

上面那条正则表达式基本上是可以实现了,但如果没有判断后缀是不是 .css的话.
其它一些不是.css文件链接也会被查找出了来..

假如有下面一段代码.

<link href="xxx.ico" rel="shortcut icon" />
<link href="templates/dede/skins/default/dedecms.css" rel="stylesheet" type="text/css" />
<link href="templates/dede/skins/default/asd2cms.css" rel="stylesheet" type="text/css" />
<link href="templates/dede/skins/default/de3213cms.css" rel="stylesheet" type="text/css" />
<link rel="alternate" type="application/rss+xml" title="xxxxxx" href="/rss.php?rssid=47" />


上面那条正则得到的内容则是

favicon.ico
templates/dede/skins/default/dedecms.css
templates/dede/skins/default/asd2cms.css
templates/dede/skins/default/de3213cms.css
/rss.php?rssid=47


但第一条 和最后一条不是我想要的..

请高手修改下,谢谢
...全文
154 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2011-01-10
  • 打赏
  • 举报
回复

void Main()
{
string html=@"<link href=""xxx.ico"" rel=""shortcut icon"" />
<link href=""templates/dede/skins/default/dedecms.css"" rel=""stylesheet"" type=""text/css"" />
<link href=""templates/dede/skins/default/asd2cms.css"" rel=""stylesheet"" type=""text/css"" />
<link href=""templates/dede/skins/default/de3213cms.css"" rel=""stylesheet"" type=""text/css"" />
<link rel=""alternate"" type=""application/rss+xml"" title=""xxxxxx"" href=""/rss.php?rssid=47"" />";
foreach(Match m in Regex.Matches(html,@"(?is)<link[^>]+?href=(['""]?)[^'""]+\1[^>]+type=\1text/css\1[^>]*/>"))
{
Console.WriteLine(m.Value);
}
}

/*
<link href="templates/dede/skins/default/dedecms.css" rel="stylesheet" type="text/css" />
<link href="templates/dede/skins/default/asd2cms.css" rel="stylesheet" type="text/css" />
<link href="templates/dede/skins/default/de3213cms.css" rel="stylesheet" type="text/css" />
*/
路人乙e 2011-01-08
  • 打赏
  • 举报
回复
Regex regCss = new Regex(@"<link\b[^<>]*?\bhref[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<cssUrl>[^\s\t\r\n""'<>]*\.css)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);

sxldfang 2011-01-08
  • 打赏
  • 举报
回复


Regex regCss = new Regex(@"(?i)<link\b[^<>]*?\bhref\s*=\s*[""']?(?<cssUrl>[^\s""'>]*?\.css)[\s'"">]");

scoun 2011-01-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 maddemon 的回复:]
(?<=<link.*href=['"])[^'"]*(?:css)(?=['"].*>)
[/Quote]

晕啊,请看我第一行好么?
我是根据 那条正则表达式里的 cssUrl 来获取返回值的..
maddemon 2011-01-08
  • 打赏
  • 举报
回复
(?<=<link.*href=['"])[^'"]*(?:css)(?=['"].*>)
scoun 2011-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
(?<=<link.*href=['"])[^'"]*(?=['"].*>)
[/Quote]

额?能在那正则的基础上修改么?
谢谢
wuyq11 2011-01-08
  • 打赏
  • 举报
回复
(?<=<link.*href=['"])[^'"]*(?=['"].*>)

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧