天天看点

常用正则表达式说明

常用正则表达式说明

常用字符

.       匹配除换行符以外的任意字符
\w      匹配字母,数字,下划线,汉字
\s      匹配任意空白符
\d      匹配数字
\b      匹配单词的开始或结束
^       匹配字符串的开始
$       匹配字符串的结束      

\ 转义字符

在查找 . \ ( ) ^ * 等在正则表达式中代表特殊含义的字符时。

如:​​

​www.baidu.com​

​​ ​

​www\.baidu\.com​

常用转义字符

\a        报警字符(打印它的效果是电脑嘀一声)
\b        通常是单词分界位置,但如果在字符类里使用代表退格
\t        制表符,Tab 
\r        回车 
\v        竖向制表符 
\f        换页符 
\n        换行符      

重复

*       重复0或更多次
+       重复1次或更多次
?       重复1次或0次
{n}     重复n次
{n,}    重复n次或更多次
{n,m}   重复n到m次      

选择性字符

[aeiou]         aeiou中任意字符
[0-9]           匹配任意一个数字,等同于\d
[a-z0-9A-Z]     等同于\w(如果只考虑英文的话)      

反义

\W          匹配任意不是字母,数字,下划线,汉字的字符
\S          匹配任意不是空白符的字符
\D          匹配任意非数字的字符
\B          匹配不是单词开关或结束位置
[^x]        匹配除了 x 以外的任意字符
[^aeiou]    匹配除了 aeiou 这几个字母以外的任意字符      

例:​

​<a[^>]+>​

​匹配用尖括号括起来的以 a 开关的字符串

替换

使用替换时,顺序是很重要的。

在匹配替换时,将会从左到或地测试每个分枝条件,如果满足了某个分枝的话,就不会支管其它的替换条件了。

例:Windows98|Windows2000|WindowsXP

分组

用 ​​

​()​

​ 括起来的分组

例:匹配IP地址:

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)      
(exp)           匹配exp,并捕获文本到自动命名的组里
(?#comment)     用来注释      

使用小括号的分组,都有一个组号,从左到右从1开始

后向引用 用于重复搜索前面某个分组匹配的文本

例:​

​\b(\w+)\b\s+\1\b​

​ 匹配重复的单词,如go go, ok ok

位置指定

(?=exp)         匹配exp前面的位置【0宽先行断言】
(?<=exp)        匹配exp后面的位置【0宽后行断言】
(?!exp)         匹配后面跟的不是 exp 的位置
(?<!exp)        匹配前面不是 exp 的位置      

例:​

​(?<![a-z])\d{7}​

​ 匹配前面不是小写字母的七位数字

贪婪与懒惰

*?            重复任意次,但尽可能少重复
+?            重复1次或更多次,但尽可能少重复
??            重复0次或1次,但尽可能少重复
{n,m}?        重复n到m次,但尽可能少重复
{n,}?        重复n次以上,但尽可能少重复      
a.*?b       匹配 aab
a.*b        匹配 aabab