元字符
指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
字符转义
特殊字符使用时候需要进行转义
字符类
字符是指计算机中使用的字母、数字、字和符号
分枝条件
指有几种规则,如果满足其中任意一种规则就当成匹配。具体使用“|”分割各各规则
分组
指用“()”来指定子表达式,也叫分组
反义
取其相反的值
反向引用
每个捕获的子匹配项按照它们在正则表达式模式中从左到右出现的顺序存储。缓冲区编号从 1 开始,最多可存储 99 个捕获的子表达式。可以使用 \n来访问每个缓冲区,其中n 是标识特定缓冲区的一位或两位十进制数字
零宽断言
用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言
(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp
(?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp
负向零宽断言
用于查找在某些内容(但并不包括这些内容)之前或之后的东西不存在
零宽度负预测先行断言(?!exp),断言此位置的后面不能匹配表达式exp
零宽度负回顾后发断言(?<!exp),断言此位置的前面不能匹配表达式exp
注释
描述性的语言,不进行操作。
贪婪与懒惰
贪婪:尽可能多的匹配字符
懒惰:尽可能少的匹配字符
平衡组/递归匹配
(?'group') 把捕获的内容命名为group,并压入堆栈(Stack)
(?'-group') 从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败
(?(group)yes|no) 如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分
(?!) 零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败
第一个就是在黑板上写一个"group",第二个就是 从黑板上擦掉一个"group",第三个就是看黑板上写的还有没有"group",如果有就继续匹配yes部分,否则就匹配no部分