正则表达式
普通字符
字母,数字,下划线,汉字,无意义的标点符号
简单的转义字符
标准字符集合
注意区分大小写 大写是相反的意思
自定义字符集合
[]方括号匹配方式 可以匹配方括号中任意一个字符
量词
修饰匹配次数的特殊符号
{n} | 表达式重复n次 |
---|---|
{m,n} | 表达式至少重复m次,至多重复n次 |
{m, } | 表达式至少重复m次 |
? | 表达式0次或1次 |
+ | 表达式至少重复一次 |
* | 表达式不出先或出现任意次 |
匹配次数的贪婪模式(匹配字符越多越好,默认!)
匹配次数的贪婪模式(匹配字符越少越好,修饰匹配次数的特殊符号后再加上一个?号)
字符边界
匹配的不是字符,而是位置
正则表达式的匹配模式
IGNOECASE 忽略大小写模式
SINGLELINE 单行模式
MULTILINE 多行模式
选择符和分组
反向引用(\nnn)
- 每一个()都会分配一个编号,使用()的捕获根据左括号的顺序从1开始自动编号
- 通过反向引用,可以对分组已捕获的字符串进行引用
预搜索 (零宽断言)
-
只进行子表达式的匹配,匹配内容不计入最终匹配结果,是0宽度
-
这个位置应该符和某个条件。判断当前位置的前后字符,是否符合指定的条件,但不匹配前后的字符。是对位置的匹配
-
正则表达式的匹配过程中,如果子表达式匹配的是字符内容,而非位置,并被保存在最终得匹配结果中,那么就认为该子表达式是占有字符的;如果子表达式匹配的仅仅是位置,或者匹配的内容并不保存在最终匹配结果中,那么就认为该子表达式是零宽度的。占有字符还是零宽度,是针对匹配的内容是否保存在最终的匹配结果中而言的
例子:以ing结尾的 eating [a-z]+(?=ing)
常用的正则表达式列表
例子
结果:0\d{2,3}-\d{7,9}|1[3578]\d{9}
结果:[\w-]+@[a-z0-9A-Z]+(.[A-Za-z]{2,4}){1,2}