贪婪和非贪婪
默认是贪婪的,如/a+/则会尽可能多的匹配a,如果想要尽可能少的匹配,则需要加?,即/a+?/
子表达式与反向引用
$1,$2匹配子表达式,$&全匹配的字符串\1反向引用,引用在正则表达式中,如^(\d)\1$即跟^(\d)\d$一样,一个很经典的使用是在匹配html节点,如<(\w+).*>.*</\1>?:表示不缓冲子表达式,如(?:\d+)(\s+),则$1代表的是(\s+)
正向预查与负向预查
?=正向预查,表示需要匹配的才能算匹配上的,如\B(?=\d{3})\B,即需要匹配到非?!负向预查,表示需要不匹配的才能算匹配上的,