今天爬取好代夫網(wǎng)站番挺,使用正則遇到一個(gè)棘手的問(wèn)題僧家, 在醫(yī)院的科室頁(yè)拌倍,想匹配腎內(nèi)科的鏈接,使用url = re.search(r'facutly/(.*?)\.htm.*?腎', response.text, re.S)
總是匹配到第一個(gè)科室涯穷。
屏幕快照 2019-07-08 下午9.59.45.png
我錯(cuò)誤的以為非貪婪匹配棍掐,那一定會(huì)匹配到靠近 腎 字url, 可是總是匹配到第一個(gè)科室
那是因?yàn)檎齽t是從頭開(kāi)始搜索,當(dāng)遇到第一個(gè)符合匹配規(guī)則時(shí)候就會(huì)與他匹配拷况,后面的就不管了作煌,r'facutly/(.*?)\.htm
與第一個(gè)科室匹配,所有在第一個(gè)科室和腎字中間的都被非貪婪匹配.*?
所匹配赚瘦,而不是我想當(dāng)然的倒序非貪婪匹配最疆, 所以非貪婪前面 的子集很重要, 要想匹配到腎內(nèi)科蚤告,前面子集必須不能匹配到前面的科室