正则笔记
(?<=exp)去除前缀
去除前缀的查询表达式
例:
查找d和h之间的内容,但不包含d
内容:abcdefghijk
正则:(?<=d)\w+h
结果:efgh
(?=exp)去除后缀
去除后缀的查询表达式
例:
查找d和h之间的内容,但不包含h
内容:abcdefghijk
正则:d\w+(?=h)
结果:defg
(?!exp)不等于
不包含表达式,必须写在表达式前面
例:
查找ab之间的内容,但内容中不包含有ab字符
内容:53g34abc4a3dabefgabhijkab3453
正则:ab((?!ab).)*ab
结果:1、abc4a3dab 2、abhijkab
(?<!exp)不等于
不包含表达式,必须写在表达式后面
例:
查找ab之间的内容,但内容中不包含有ab字符
内容:53g34abc4a3dabefgabhijkab3453
正则:ab(.(?<!ab))*ab
结果:1、abc4a3dab 2、abhijkab
(?#comment)注释
例:
2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)
贪婪与懒惰
贪婪:当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符
例:
//查找ab之间的内容
内容:123ab123ab123ab123ab123
正则:ab.*ab
结果:ab123ab123ab123ab
懒惰:符号“?”。有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符
例:
//查找ab之间的内容
内容:123ab123ab123ab123ab123
正则:ab.*?ab
结果:1、ab123ab 2、ab123ab