正则表达式常用通配符


常用通配符

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匹配字符串

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这几个字母以外的任意字符

]+>匹配用尖括号括起来的以a开头的字符串