正则表达式常用通配符
常用通配符
1.\b (元字符)表示单词的边界
单词的开头或结尾,也就是单词的分界处,通常是空格/标点符号/换行,但是\b不匹配这些分割字符中的任何一个,只是匹配一个位置
例如:\bhi\b 只是匹配hi这个单词,不会匹配 history中的"hi"
2. .(点)匹配除了换行符以外的任意字符
3. *(星号)匹配的是数量,指前面的内容可以连续重复使用任意次来使整个表达式得到匹配
(.*)表示任意数量的不包含换行的字符
例子:
\bhi\b.*\bLucy\b
上面表示hi后面有人一个除换行之外的其他字符,后面接着一个Lucy
4. \d 匹配一个数字
\d{2}表示连续匹配两次数字,等同于 \d\d,\d{5,12}匹配5到12位数字
5. \s 匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等
6. \w 匹配字母或者数字或者下划线或者汉字
7. + 匹配1个或者更多连续的数字
8. ^匹配字符串的开始
9. $ 匹配字符串的结束
\^\d{5,12}$\表示匹配5-12位数字
字符转义
如果想匹配字符串中的(.*)等字符,需要用\.,或者(\*)来实现,如果想匹配字符串中的\,则需要用\\实现
例子:acfun\.cn匹配字符串http://acfun.cn
C:\windows需要用正则表达式C:\\windows来匹配
重复
- * 重复0次或者多次
- + 重复1次或者多次
- ?重复0次或者1次
- {n} 重复n次
- {n,}重复n次或者更多次
- {n,m} 重复n到m次
字符类
[aeiou]匹配任何一个英文元音字母
[.?!]匹配三个标点符号的任何一种
[a-z0-9A-Z]匹配数字或字母(不区分大小写)
分支条件
0\d{2}-\d{8}|0\d{3}-\d{7} 匹配三位区号-8位电话号码的或者是四位区号-7位电话号码
\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}匹配三位区号用括号括起来或者有空格或者-也可以没有连接8位电话号码,后面是没有括号
\d{5}-\d{4}|\d{5} 表示匹配5用-链接的9位的邮政编码或者五位的邮政编码
注意:不能写成\d{5}|\d{5}-\d{4}这样只能匹配到5位的或者9位的前五位
不能匹配到完整的9位
原因:匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了
分组
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。
匹配IP地址的正则表达式
大写字母实现反义
\W 匹配任意不是字母,数字,下划线或者汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或者结尾的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符