crawler_正则表达式零宽断言
2017-03-02 16:54
309 查看
在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了。(?=exp):零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。[logid:616758221][proctime:total:2(ms)queue:0+rev:0+proc:2+write:0][reqip:127.0.0.1][reqsvr:SCS][cmdno:3][svrname:SLS][errno:0][][cuid:814367243e397033a1b51d8258c8d660uid:2108092475relay_data:{"data":{"p":[{"c":1,"id":339,"p":[[1019,4798],[1019,4798],[1019,4798],[1018,4798],[1018,4798],[1018,4798],[1018,4798],[1018,4798],[1019,4798]],"s":1}],"pgid":0,"pid":2859},"sid":"6178b1b64b587450e856bb44d0ea3fa7","sig_no":30001,"to_cuid":"14C273C39D95B70286E47B26E5370715|553193170527653"}hget_all:[K_DOI:14C273C39D95B70286E47B26E5370715|553193170527653]talk_scs:0(ms)][] (?<=exp):零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp[/code]
#匹配后面为_path,结果为product 'product_path'.scan/(product)(?=_path)/ ps:这样_path就不会占用坐标,继续往后扫时就可以从_继续扫描了 eg:\[(.*?)\](?=(\[|$)) 用来匹配下文,就能起到框起[]要求结束符是][或者]$,并且保证每一对儿能命中
#匹配前面为name:,结果为wangfei'name:wangfei'.scan/(?<=name:)(wangfei)/#wangfei(?!exp):零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp。
#匹配后面不是_path'product_path'.scan/(product)(?!_path)/#nil#匹配后面不是_url'product_path'.scan/(product)(?!_url)/#product(?<!exp):零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp
#匹配前面不是name:'name:angelica'.scan/(?<!name:)(angelica)/#nil#匹配前面不是nick_name:'name:angelica'.scan/(?<!nick_name:)(angelica)/#angelica
相关文章推荐
- Java正则表达式 预搜索(零宽断言)详解(精)
- 最近频繁用到正则表达式,恶补一下,高手略过(零宽断言)
- 正则表达式的零宽断言
- 正则表达式零宽断言使用
- perl正则表达式中的零宽断言
- 用正则表达式(零宽断言)去除字符串中重复的字符
- 正则表达式 零宽断言(正向和负向)
- 正则表达式零宽断言详解
- JavaScript正则表达式的零宽断言
- 正则表达式 零宽断言 负向零宽断言 平衡组/递归匹配
- 教你怎么理解正则表达式之零宽断言(环视)
- JAVASCRIPT 正则表达式学习-->基础与零宽断言(转自司徒正美)
- 正则表达式-- 零宽断言与懒惰匹配以及平衡组
- C#正则表达式(3):注释,分组,向后引用,零宽断言,贪婪
- 正则表达式学习2 - 零宽断言
- js正则表达式中关于零宽断言的奇异现象
- php学习第四章:正则表达式(四)匹配规则:分组、环视(零宽断言和负向零宽断言)
- 正则表达式之零宽断言
- 对正则表达式零宽断言的个人理解(Java测试下)