断言有四种:正向先行断言,负向先行断言,正向后行断言,负向后行断言
其中先行断言和后行断言的区别是找到满足patten的位置后是向前查找还是向后查找,先行断言找到满足patten位置后,是向前搜索看是否满足断言,而后行断言则是向后回溯查找,正向是满足条件,负向是不满足条件。这是我的理解。
测试字符串 $str = "http://www.baidu.com"
1.正向先行断言
形式: $patten(?=条件)
找到‘baidu’ 正则:"\S+(?=\.com)"
2.负向先行断言
找到"com" 正则:"\S+(?!)"
形式: $patten(?!条件)
3.正向后行断言
形式: (?<=条件)$patten
4.负向后行断言
形式:(?!=条件)$patten