• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

求正则表达式分析 ...
bwangel 2012-05-19 01:03:17
RT.
我只写出了alt在src左边的情况。而且也不完善,主要是没考虑到""里面有'号或''里面有"号。
            Regex re = new Regex("<img\\s+[^>]*alt=[\'\"](?<alt>[^\'\"]+)?[\'\"][^>]*src=[\'\"](?<url>http://[^\'\"]+)[\'\"][^>]*>", RegexOptions.IgnoreCase);

...全文
1009 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
-过客- 2012-05-20
这种需求,最适合用环视来解决

Regex re = new Regex("(?i)<img(?=[^>]*?alt=([\"']?)(?<alt>(?:(?!\\1).)*)\\1)[^>]*?src=([\"']?)(?<src>(?:(?!\\2).)*)\\2[^>]+>");
string imgurl = "<img src='http://www.a6.com/aaa.jpg' title='heeeo' alt='hello!' />";
MatchCollection mc = re.Matches(imgurl);
foreach (Match m in mc)
{
string url = m.Groups["src"].Value;
string alt = m.Groups["alt"].Value;
richTextBox2.Text = string.Format("Url={0}; Alt={1}", url, alt);
}
/*-----输出-----
Url=http://www.a6.com/aaa.jpg; Alt=hello!
*/
回复
newxdlysk 2012-05-19
那你再取匹配组1和3看看是src还是alt
回复
anzhiqiang_touzi 2012-05-19
[Quote=引用 5 楼 的回复:]
引用 1 楼 的回复:
<img[^>]+?(alt|src)=(["'])(?<src>[^\2]*?)\2\s+?(src|alt)=(["'])(?<alt>[^\4]*?)\4[^>]+?>


经测试,好象如果alt和src的位置互换的话。得到的结果就反了。还请解惑!

C# code

static void Main(string[] args)
……
[/Quote]
回复
bwangel 2012-05-19
[Quote=引用 1 楼 的回复:]
<img[^>]+?(alt|src)=(["'])(?<src>[^\2]*?)\2\s+?(src|alt)=(["'])(?<alt>[^\4]*?)\4[^>]+?>
[/Quote]

经测试,好象如果alt和src的位置互换的话。得到的结果就反了。还请解惑!

static void Main(string[] args)
{
Regex re = new Regex("<img[^>]+?(alt|src)=([\"'])(?<src>[^\\2]*?)\\2\\s+?(src|alt)=([\"'])(?<alt>[^\\4]*?)\\4[^>]+?>", RegexOptions.IgnoreCase);
//Regex re = new Regex("<img\\s+([^>]*)[/]?>", RegexOptions.IgnoreCase);
string imgurl = "<img alt='hello!' src='http://www.a6.com/aaa.jpg' title='heeeo' />";
MatchCollection mc = re.Matches(imgurl);
foreach (Match m in mc)
{
string url = m.Groups["src"].Value;
string alt = m.Groups["alt"].Value;
Console.WriteLine("Url={0}; Alt={1}", url,alt);
}
Console.ReadLine();
}

回复
cnfixit 2012-05-19
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:

楼上,你试试这个

<img class="logo" alt="asdf" src="http://c.csdn.net/bbs/t/5/i/pic_logo.gif">

你这标签都不对,咋匹配,没封闭斜杠
[/Quote]

你说的对,没注意……
回复
newxdlysk 2012-05-19
[Quote=引用 2 楼 的回复:]

楼上,你试试这个

<img class="logo" alt="asdf" src="http://c.csdn.net/bbs/t/5/i/pic_logo.gif">
[/Quote]
你这标签都不对,咋匹配,没封闭斜杠
回复
cnfixit 2012-05-19
楼上,你试试这个

<img class="logo" alt="asdf" src="http://c.csdn.net/bbs/t/5/i/pic_logo.gif">
回复
newxdlysk 2012-05-19
<img[^>]+?(alt|src)=(["'])(?<src>[^\2]*?)\2\s+?(src|alt)=(["'])(?<alt>[^\4]*?)\4[^>]+?>
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2012-05-19 01:03
社区公告

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