正则表达式贪婪模式中的非贪婪模式

这两天再写一个内部的统计,需要提取来自于其它搜索的关键字。

正则表达式:q=(.*?)&

需要提取的内容:http://so.360.cn/s?ie=utf-8&src=hao_search&q=%E6%83%A0%E5%B7%9E%E4%B8%BD%E5%A3%B0&ab

匹配的内容:%E6%83%A0%E5%B7%9E%E4%B8%BD%E5%A3%B0

解释:(.*? )其中?的作用,他的作用就是勉强模式重复前面的字符,什么意思呢?就是如果我用(.*a)去匹配aaaaaaa字符串的结果就是(aaaaaaa)源字符串这叫贪婪模式,如果用(.*?a)去匹配aaaaaaa的话他就会先匹配第一a,然后是第二个a,然后是第三个a…….这就叫勉强模式匹配有的地方也叫懒惰模式匹配。通俗一点(大家都喜欢通俗的解释,呵呵)就是前者是从后往前去匹配尽可能多的字符,而后者是从前往后匹配

原文地址:https://www.cnblogs.com/fogwang/p/3421470.html