qidu 2020-07-05
贪婪模式和懒惰模式都会进行回溯; 匹配两次相关的字符时,匹配到不符合要求的字符后,这个字符才算匹配完,然后继续匹配下一个字符; 比如:xy{1,3}z 样本:xyyyz 在匹配该样本时,无论贪婪模式还是懒惰模式,都需要匹配到z后才能知道y字符匹配完成,才会继续匹配表达式中的z字符
默认模式就是贪婪模式,正则会在满足要求的情况下尽可能多的匹配字符知道匹配到不符合要求的字符为止;
在满足要求的情况下尽可能多的匹配字符知道匹配到不符合要求的字符为止; 在量词后加?即表示懒惰模式
在满足要求的情况下尽可能多的匹配字符,如果匹配失败就结束; 在量词后加+即表示独占模式
通过模式修饰符(?模式符号)来表示正则的匹配模式,使用时将执行的模式修饰符放在指定的正则前面即可。
(?i),Insensitive : 不敏感 所有字符不区分大小写,在正则最前面添加(?i)即可
部分字符不区分大小写,在需要不区分大小写的部分添加(?i),再用()将这部分括起来 ((?i)baby)Come 表示 baby 不区分大小写, Come 区分大小写 ![](https://img2020.cnblogs.com/blog/1294391/202007/1294391-20200705201901417-251981112.png) 不区分大小写,但是第二次匹配的格式与第一次一致 ![](https://img2020.cnblogs.com/blog/1294391/202007/1294391-20200705201623915-160856864.png)
*可以匹配所有字符,包括换行符
默认情况下,^匹配整个文本的开头,$匹配整个文本的结尾
(?m), 表示多行匹配模式,会匹配每一行的开头和结尾
给正则表达式添加注释 (?w comment)