正则表达式
标准字符集合
字符 |
解释 |
|
任意一个数字,0~9中的任意一个 |
|
任意一个字母或数字或下划线,也就是A~Z,a~z,0~9,_中任意一个 |
|
包括空格、制表符、换行符等空白字符的其中任意一个 |
|
小数点可以匹配任意一个字符,但是不包括 |
除了“.
”之外都区分大小写,大写就是相反的意思
自定义字符集合
字符 |
解释 |
[ab5@] |
匹配a或b或5或@ |
[^abc] |
匹配abc之外的任意一个字符 |
[a-z] |
匹配a~z之间的任意一个字母 |
[^a-d0-3] |
匹配a~d和0~3之外的任意一个字符 |
除了^-\之外的特殊符号,如果被包含在中括号中,则失去特殊意义
量词
字符 |
解释 |
{n} |
表示匹配到n次 |
{m,n} |
表示匹配m到n次,最少m,最大n |
{n,} |
表示至少匹配到n次 |
? |
表示匹配到0次或1次,等价于{0,1} |
+ |
表示至少匹配到1次,等价于{1,} |
* |
表示不匹配或匹配任意次,等价于{0,} |
默认量词匹配模式为贪婪模式,也就是能多匹配就多匹配,如果在量词后加上"?"则会更改为非贪婪模式,意思是满足最低匹配规则就停止继续匹配。
例如:"123456"如果是匹配"\d{2,6}"的话则会匹配到:"123456",如果是匹配"\d{2,6}?"的话则会分别匹配到"12","34","56"
位置匹配
字符 |
解释 |
|
匹配字符串开始的位置 |
|
匹配字符串结束的位置 |
|
匹配一个单词的边界,在匹配中不光hello是一个单词,hello123也会被当作一个单词 |
|
该位置后面会匹配到exp |
|
该位置前面会匹配到exp |
|
该位置后面不会匹配到exp |
|
该位置前面不会匹配到exp |
位置匹配不会匹配到带有宽度的字符,而仅仅是匹配位置,可以理解成位置的逻辑判断