导航
  • 主页
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm
  • WPF
  • 问答

急问一个正则表达式的写法

chsilence 中建材集团进出口公司 CTO/CIO/技术副总裁/总工程师  2005-06-22 11:22:56
我想取得这样的结果<img src="12.jpg" name="pic"> 和<img name="pic" src="13.jpg">中的SRC部分,不要NAME部分,请问怎么写呀?谢谢!
...全文
159 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
「已注销」 2005-06-26
不懂,打广告,微软.NET技术群,7661240
回复
9sun888 2005-06-26
用这个正则表达式更好些!
(?<=img.*?src\s*?=\s*?").*?(?=")

可以匹配"src = "中含有空格的情况,如<img name="pic" src = "13.jpg">得到13.jpg
回复
didibaba 2005-06-26
刚脆用我的函数,出错你找我。
Public Shared ReadOnly Property AnalyseHtmlToImgList(ByVal Html As String) As String '将html代码中的img值解析返回
Get
If Html = "" Then
Return ""
End If
'If HttpHead = "" Then
' Return ""
'End If

Dim ReturnValue As String = ""
Dim RX As New Regex("(src=)('|" & Chr(34) & "| )?(.[^'|\s|" & Chr(34) & "]*)(\.)(jpg|gif|png|bmp|jpeg)('|" & Chr(34) & "|\s|>)?") '("<img\s+?[^<]*?src=(?:""?)([^""\s>]+)(?:""?)\s*?[^<]*?>") '
Dim MC As MatchCollection = RX.Matches(Html)
Dim M As Match
For Each M In MC
If ReturnValue = "" Then
ReturnValue = M.Value '.Result("${url}")
Else
ReturnValue = ReturnValue + "," + M.Value 'M.Result("${url}")
End If

Next
ReturnValue = ReturnValue.Replace("""", "")
ReturnValue = ReturnValue.ToLower.Replace("src=", "")

'将没有http头的图片全部加上http头信息
'-----------------------------------------------------
Dim TmpArray() As String = ReturnValue.Split(",")
Dim Number_i As Integer
ReturnValue = ""
For Number_i = LBound(TmpArray) To UBound(TmpArray)
'如果包含有httphead
'=========================
'If GetCheckStrHave(HttpHead.ToLower, TmpArray(Number_i)) Then '包含

'Else '不包含
' TmpArray(Number_i) = HttpHead + "/" + TmpArray(Number_i)
'End If
'=========================

If ReturnValue = "" Then
ReturnValue = TmpArray(Number_i)
Else
ReturnValue = ReturnValue + "," + TmpArray(Number_i)
End If
Next
'-----------------------------------------------------

Return ReturnValue.Replace("///", "//")
End Get
End Property
回复
didibaba 2005-06-26
'|" & Chr(34) & "| )?(.[^'|\s|" & Chr(34) & "]*)(\.)(jpg|gif|png|bmp|jpeg)('|" & Chr(34) & "|\s|>)?"
回复
9sun888 2005-06-26
他们的正则表达式都写错了!用我的没错!

(?<=img.*?src=").*?(?=")
回复
mobydick 2005-06-23
string regexStr = @"<img.*?src\s*=\s*""(?<src>[^""]*?)"".*?>";
回复
mobydick 2005-06-22
其实就是速马的。。。
回复
mobydick 2005-06-22
string regexStr = @"<img.*?src\s*=\s*""(?<src>\S*?)"".*?>";
回复
速马 2005-06-22
<img.*?src\s*=\s*"(?<src>\S*?)".*?>
回复
chsilence 2005-06-22
??????????
回复
hatita 2005-06-22
foreach(Match mc in matches)
{
Console.WriteLine(mc.Groups[1]);
}
// Answer
// 12.jpg
// 13.jpg
回复
mba9001 2005-06-22
up
回复
chsilence 2005-06-22
哦,谢谢!可是我用你的正则表达式,还是把NAME属性也取出来了呀,我只要SRC属性!
回复
速马 2005-06-22
*或者+后面跟个?表示非贪婪匹配,比较:
string html = "<div></div>";
string regex1 = "(<.*?>)";
string regex2 = "(<.*>)";
回复
chsilence 2005-06-22
请问*?是什么意思?
回复
发动态
发帖子
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.