正则表达式href\s*=\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))什么意思

作者:enenba | 发表于:2012-04-08 23:56 | 分类:正则表达式

问:

详细解释href\s*=\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+)) 正则

 

回答:

取href的链接的

href是正常的href字符
\s表示一个空格,*表示1个或者多个匹配,当前的意思是一个或者多个空格
=是正常的字符
?<1>在这里应该是命名捕获组,我不知道你这个正则是哪个流派的,但应该不是js和c#的,呵
\\S+,\\前面一个表示转义,这个的意思是\后面带一个S,而S可以是多个,同样,\"也是转义,因为"和\都是正则的元字符
[^\"],在方括号中的^,如果我没记错的话,应该是不包含的意思吧,就是不不含"

差不多了吧,不一定全部正确,你应该去了解一下正则的元正符再来看

 

*是指0或者多个 href= 和 href =都匹配

(?<name>exp)   匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp)  匹配exp,不捕获匹配的文本,也不给此分组分配组号

\"(?<1>[^\"]*)\" 匹配的 "任意字符串" 只要引号内不含^"就可以

还有一个作用就是把匹配的引号内的字串放在group 1里


(?<1>\\S+)这里可能是(?<1>\S+)
匹配任意非空字串,并放入 group 1里

因此整个表达式应该是匹配一个
href属性,并把属性值放入 group 1中

这样可以在匹配后直接使用该属性值

上一篇: 一个正则表达式 匹配以“abc”开头后面不能包含“x”、“y”、“z”字符   |   下一篇:采集侠正文提取原理观察» 标签: 正则匹配 正则表达式 数据采集

评论: