?=,?<=,?!,?<!,?: 的使用
?= 匹配后面是
匹配对象:ABCABB
可以匹配到:ABC(?=ABB)
无法匹配到:ABC(?=ABC)
?<= 匹配前面是
匹配对象:ABCABB
可以匹配到:(?<=ABC)ABB
无法匹配到:(?<=ABB)ABB
?! 匹配后面不是
匹配对象:ABCABB
可以匹配到:ABC(?!ABC)
无法匹配到:ABB(?!ABB)
?<! 匹配前面不是
匹配对象:ABCABB
可以匹配到:(?<!ABB)ABB
无法匹配到:(?<!ABC)ABB
?: 标识为非捕获组
都知道所有的()包裹的部分,如果不做处理,都会被当作捕获组。如果写成(?:haha)这般,则括号里的匹配的部分不会成为捕获组。