正则表达式学习(一)

元字符

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

字符转义

如果要想查元字符的话,比如要匹配www.baidu.com,那么由于.已经被用做元字符了,所以你需要\.这样转义下才能匹配到.

重复

代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
重复零次或一次
{n} 重复 n 次
{n,} 重复 n 次货更多次
{n,m} 重复 n 到 m 次

分支条件

比如我们需要同时匹配(010)223242322和0559-222341242,我们通常使用|来进行区分,正则如下:

(0?\d{4}-\d{8})|(\(0\d{2}\)\d{8})

分组

比如,我们要匹配 ip 地址221.222.123.223,我们就需要使用分组,通常我们使用小括号来指定子表达式,然后可以指定这个子表达式的重复次数

(\d{1,3}\.)\d{1,}

但是,这样,我们匹配到的也可能是300.300.300.300这样的不可能存在的 ip 地址,所以,我们只能使用冗长的分组

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

反义

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

举例,我们有一条字符串 cv?uuid=9f0d65cf6ba397d5b5cb0c9aa0c12df1&tc=113283078&p=kxescore.exe&c=1335&f=json

我们要匹配不包含 f=json 以外的内容,正则表达式如下:

[^(f=json)]