正则表达式

注意: 正则表达式与文件通配语法无关, 比如 *.xml

正则表达式基础语法

大部分的字符(包括字母和数字字符)是普通字符。他们只能匹配它们自己。
cat 匹配 cat

有一些被称为“元字符”的特殊字符, 可以匹配特殊规则

点 “.”

匹配任意字符
c.t 匹配: 以c开头, 以t结尾, 中间是任意一个字符

使用反斜杠“\”可以忽略元字符,使得元字符的功能与普通字符一样。
c.t 匹配: c.t
c\t 匹配: c\t

在正则表达式的实现中, . 不能匹配换行符。

字符类: 字符类是一组方括号内的字符, 表示可以匹配其中的任何一个字符。

c[aeiou]t 表示匹配: cat or cet or cit or cot or cut

[0123456789] 表示匹配 任意一个数字
[a] 匹配单个字符 a

重要提示:字符类中和字符类外的规则有时不同,一些字符在字符类中是元字符,在字符类外是普通字符。一些字符正好相反。还有一些字符在字符类中和字符类外都是元字符,这要视情况而定!
比如: . 表示匹配任意一个字符, 而[.] 表示匹配一个全角句号。

字符类的范围

在字符集中,你可以通过使用短横线来表示匹配字母或数字的范围。

[b-f] 与 [bcdef]相同
[A-Z] 与[ABCDEFGHIJKLMN….XYZ] 相同
[1-9] 与 [123456789] 相同

字符类的反义

[^a] 匹配 任何不是“a”的字符
[^a-zA-Z0-9] 匹配 任何不是字母也不是数字的字符
[^\^] 匹配任何不是 “^”的字符

转义字符类

\d 与 [0-9]相同(要匹配\d 用 \d)
\w 与 [0-9A-Za-z_]相同
\s 匹配一个空字符(空格, 制表符, 回车或者换行)

\D 与 [^0-9]相同, 表示匹配一个非数字字符。
\W 与 [^0-9A-Za-z]相同, 表示匹配一个非数字同时不是字母的字符。
\S 表示匹配一个非空字符。

重复

在字符或字符集之后, 可以使用{}大括号来表示重复。
a{1} 与 a 相同
a{3} 匹配 aaa
a{0} 匹配 空字符串
a{2} 匹配 a{2}

指定重复次数范围

colou{0,1}r 匹配 color 或者 colour
a{3,5} 匹配 aaa 或者aaaa 或者 aaaaa

注意: 优先匹配最长字符串, 比如输入 I had an aaaaawful day会匹配单词aaaaawful中的aaaaa,而不会匹配其中的aaa。

重复次数也可以是开区间:
a{1, } 表示匹配一个或一个以上的连续字符a

关于重复的转义字符

? 与 {0, 1} 相同
* 与 {0, } 比如: .* 表示匹配任意内容
+ 与{1,} 相同, 比如 \w+ 表示匹配一个词

\?*+ 表示匹配字符串 “?*+”
[?*+] 表示匹配一个问号, 或者一个星号, 或者一个加号

非贪婪匹配

通过在句尾加上一个问号, 可以使得字符串重复不再匹配最长字符。
\d{4,5}? 表示匹配\d\d\d\d或者\d\d\d\d\d。也就是和\d{4}一样

“.*?” 表示先匹配一个双引号,然后匹配最少的字符,然后是一个双引号,与上面两个例子不同,这很有用。

选择匹配

使用 | 分隔可以匹配不同的选择:
cat|dog 表示匹配 “cat” 或者 “dog”
red|blue| 或者 red||blue 或者 |red|blue 表示匹配red或者blue或者一个空字符

a|b|c 与[abc]相同

分组

可以使用括号表示分组:
简化正则表达式:
\w+\W+\w+\W+\w+ 以及 \w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+
答案:
\w+(\W+\w+){2}, \w+(\W+\w+){5}

单词分隔符

单词和非单词之间有单词分隔符。
\b 表示匹配一个单词分隔符

换行符

^表示匹配行的开始位置
$表示匹配行的结束位置
^&表示一个空行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值