Regex rep = new Regex(" (src|href|background|value)=('|\"|)([^('|\"|)http://].*?)('|\"| |>)"); 正则怎么理解啊
Regex rep = new Regex( " (src|href|background|value)=( '|\ "|)([^( '|\ "|)http://].*?)( '|\ "| |> ) ");
------解决方案--------------------(src|href|background|value)=( '|\ "|)([^( '|\ "|)http://].*?)( '|\ "| |> )
(src|href|background|value) 这是“或”的关系,“src”,“href”,“background”,“value”中的任意一个
= 普通字符
( '|\ "|) 也是“或”的关系, '或 "或者没有,但一般不这样写
[^( '|\ "|)http://] 这个是错误写法,[]不能这样用
使用方括号 [ ] 包含一系列字符,能够匹配其中任意一个字符。用 [^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。
.*? 非贪婪模式,匹配附换行符外的任意多个字符
就整个正则表达式来说,这种写法是错误的
------解决方案--------------------$加一个数字表示对捕获组的引用
捕获组(exp)指把正则表达式exp匹配到的内容捕获到一个组里,如果这个组没有命名,可以用$加上数字对其引用,$0指全部匹配结果,$1对应第一个“(”及与其配对的“)”之间的正则表达式匹配到的内容,$2同理,可以嵌套,按“(”出现的顺序确定捕获组的序号
上式中
$1对应 (src|href|background|value)
$2对应 ( '|\ "|)
$3对应 ([^( '|\ "|)http://].*?)
$4对应 ( '|\ "| |> )