Regex rep = new Regex(" (src|href|background|value)=('|\"|)([^('|\"|)http://].*?)('|\"| |>)");

解决方案 »

  1.   

    正则表达式是一种语言 
    简单的可以参考http://msdn2.microsoft.com/en-us/library/hs600312.aspx还有专门一本书讲这个的 可以去网上搜搜Oreilly.Mastering.Regular.Expressions
      

  2.   

    (src|href|background|value)=('|\"|)([^('|\"|)http://].*?)('|\"| |>)(src|href|background|value) 这是“或”的关系,“src”,“href”,“background”,“value”中的任意一个
    = 普通字符
    ('|\"|) 也是“或”的关系,'或"或者没有,但一般不这样写
    [^('|\"|)http://] 这个是错误写法,[]不能这样用
    使用方括号 [ ] 包含一系列字符,能够匹配其中任意一个字符。用 [^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。.*? 非贪婪模式,匹配附换行符外的任意多个字符
    就整个正则表达式来说,这种写法是错误的
      

  3.   

    晕  就分析这个  lxcnn(过客)   说的不错 只是这个那个地方错了 呢
    我觉的也不怎么对 ,但这是一个开源用的 
    主要是)=('|\"|)([^('|\"|)http://].*?)('|\"| |>)");   这个地方不理解
      

  4.   

    就是“=”后分三种情况,“'”,“"”和直接接网址
    按([^('|\"|)http://].*?)的字面意义就是,不是以“http://”开头的网址
      

  5.   

    接着还有这个 sourceString = rep.Replace(sourceString," $1=$2" + replaceURL + "$3$4");   $1=$2  和 $3$4  怎么理解呢
      

  6.   

    按这个正则字面理解的意义来说,这个正则可以这样写Regex rep = new Regex(@"(src|href|background|value)=(['""])?((?!http://)[^'""\s]*?)(\2|\s|>)");可以匹配的内容举例如下
    src="www.baidu.com/1.jpg"
    src='www.baidu.com/1.jpg'
    src=www.baidu.com/1.jpg
      

  7.   

    $加一个数字表示对捕获组的引用捕获组(exp)指把正则表达式exp匹配到的内容捕获到一个组里,如果这个组没有命名,可以用$加上数字对其引用,$0指全部匹配结果,$1对应第一个“(”及与其配对的“)”之间的正则表达式匹配到的内容,$2同理,可以嵌套,按“(”出现的顺序确定捕获组的序号上式中
    $1对应 (src|href|background|value)
    $2对应 ('|\"|)
    $3对应 ([^('|\"|)http://].*?)
    $4对应 ('|\"| |>)