求正则表达式分析 ...

bwangel 2012-05-19 01:03:17
RT.
我只写出了alt在src左边的情况。而且也不完善,主要是没考虑到""里面有'号或''里面有"号。
            Regex re = new Regex("<img\\s+[^>]*alt=[\'\"](?<alt>[^\'\"]+)?[\'\"][^>]*src=[\'\"](?<url>http://[^\'\"]+)[\'\"][^>]*>", RegexOptions.IgnoreCase);
...全文
1601 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 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[^>]+?>

111,093

社区成员

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

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

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