正则表达式通过普通字符和特殊字符(元字符)的组合,形成一种文本模式,用于检索、替换符合某种模式的文本,或从文本中提取符合条件的子串。
元字符
^ | 开头 |
$ | 结尾 |
. | 除了换行符以外的任意字符(a.c可以是a@c abc 但是不可以为空) |
w | 字母|数字|下划线|汉字 word |
s | 空白符 space |
d | 数字 digit |
b | 单词的开始或结束 (\bword\b 匹配整个单词 "word",但不匹配 "words" 或 "sword") |
反义如果一些元字符想取反义,则元字符大写,前面加\表示'非' ;比如\B,匹配不是数字的字符 如果是排除具体的字符,可以用取区间[^] ;比如[^x],除x以外的字符 |
限定符
* | 重复0次或者更多 |
+ | 重复1次或者更多 |
? | 重复0次或1次 |
{n} | 重复n次 |
{n,} | 重复至少n次 |
{n,m} | 重复n~m次 |
正则分贪婪与非贪婪(懒惰)之分 贪婪尽可能多匹配,一次性读完整个字符,只要遇到不匹配的字符就舍弃 直到匹配成功为止;\d{3,6} 假如整个字符串中有6个数字可以匹配 就成功 懒惰在整个表达式能匹配成功的前提,尽可能少匹配,在限定词后面加?;比如{n,m}? |
分组
() | 括号内容作为一个整体 | ^(ab)* |
转义
\ | 把元字符和限定符转成普通字符 | ^(\(ab\))* |
条件
| | 满足任何一个条件都匹配成功 | ^(123|456)$ |
区间
[] | 用[]限定条件 | [0-9] [a-zA-Z0-9] |