?<=是斷言,斷言常和零寬這個(gè)詞一起出現(xiàn),零寬斷言是在文本的某個(gè)位置判斷這個(gè)位置前面或者后面的字符滿足或者不滿足一些條件,具體是向前還是向后,滿足還是不滿足就和具體的斷言類型相關(guān)了。需要特別注意的是,斷言只是匹配一個(gè)位置,并不匹配一個(gè)具體的字符,所以是零寬。/^(?<=(?:Chapter|Section)[t]*)d+$)/這個(gè)正則首先匹配字符串的開始;然后是一個(gè)斷言,這個(gè)斷言用于判斷該位置前面的字符滿足Chapter|Section)[t]*,注意此時(shí)匹配的位置并未發(fā)生改變,還是在字符串的開始;然后匹配1到多個(gè)數(shù)字,注意開始匹配的位置還是在字符串的開始;然后是字符串的結(jié)尾;綜上,結(jié)合1,3和4,這個(gè)字符串就是由1到多個(gè)數(shù)字組成的;結(jié)合2,這個(gè)字符串開始的前面還需要匹配一些字符,這明顯是矛盾的,一個(gè)字符串的開始位置前面怎么還會(huì)有字符。所以這個(gè)正則什么也匹配不了。/(?<=(?:Chapter|Section)[t]*)d+$)/去掉^以后,這個(gè)正則匹配成功的條件是在字符串中存在這樣一個(gè)位置,這個(gè)位置前面滿足Chapter|Section)[t]*,后面是1到多個(gè)數(shù)字,然后是字符串的結(jié)尾。