(1)匹配任意字符 . 字符可以匹配任何一个单个字符
文本:
sales1.xls
orders3.xls
sales2.xls
sales3.xls
apacl.xls
europe2.xls
nal.xls
na2.xls
sal.xls
正则表达式:
sales.
结果:
sales1
sales2
sales3
分析:
正则表达式sales.将把由字符串sales和另外一个字符构成的文件名查找出来。
注意:正则表达式可以用来匹配包含着字符串内容的模式。匹配的并不总是整个字符串,而是与某个模式相匹配的字符,即使他们只是整个字符串的一部分。在上面的列子里,我们使用的正则表达式并不能匹配整个文件名,他只是匹配了文件名的一部分。如果你需要把某个正则表达式的匹配结果传递到其他代码或应用陈旭里做进一步处理,就必须记住这一细节差异。
<1>.字符可以匹配任何单个的字符,字母,数字甚至是.字符本身。
<2>在同一个正则表达式里面允许使用多个.字符,他们既可以连续出现,也可以间隔着出现在模式的不同位置。
文本:
sales1.xls
sales.xls
orders3.xls
sales2.xls
sales3.xls
apacl.xls
europe2.xls
nal.xls
na2.xls
sal.xls
正则表达式:
.a.
结果:
sal
sal
sal
sal
pac
nal
na2
sal
<3>.字符在正则表达式里有着特殊的含义。如果模式里需要一个 . ,你需要告诉正则表达式你需要的是.字符本身,而不是正则表达式里的特殊含义。你必须在.前面加上一个\字符对他进行转义。
文本:sales1.xls
sales.xls
orders3.xls
sales2.xls
sales3.xls
apacl.xls
europe2.xls
nal.xls
na2.xls
sal.xls
正则表达式:
.a.\.xls
结果:
nal.xls
na2.xls
sal.xls
(2)匹配一组字符
(1)匹配多个字符中的某一个
在正则表达式中我们可以可以使用元字符[和]来定义一个字符集合。在使用[和]定义的字符集合里,这俩个元字符之间的所有字符都是该集合的组成部分,字符集合的匹配结果是能够与该集合里的任意一个成员相匹配的文本。
文件:
sales1.xls
orders3.xls
sales2.xls
sales3.xls
apacl.xls
europe2.xls
na1.xls
na2.xls
sa1.xls
oak.xls
pa2.xls
cal.xls
正则表达式:
[ns]a.\.xla
结果:
na1.xls
na2.xls
sa1.xls
解析:
这里使用的正则表达式以[ns]开头,这个集合将匹配字符n或者s(但不匹配其他字符)。
(2)利用字符集合区间
字符区间可以用-(连子符)来定义;
文本:
sales1.xls
orders3.xls
sales2.xls
sales3.xls
apacl.xls
europe2.xls
aa1.xls
na2.xls
sa1.xls
oak.xls
pa2.xls
Zal.xls
正则表达式:
[A-z]a.\.xls
结果:
aa1.xls
na2.xls
sa1.xls
oak.xls
pa2.xls
Zal.xls
(3)取非匹配(除了那个字符集合里的字符,其他字符都可以匹配)
文本:
sales1.xls
orders3.xls
sales2.xls
sales3.xls
apacl.xls
europe2.xls
nam.xls
na2.xls
sa1.xls
nak.xls
pa2.xls
cal.xls
正则表达式:
[ns]a[^0-9]\.xls
结果:
nam.xls
nak.xls
分析:
^效果将作用与给定字符集合里的所有字符或字符区间,而不是仅限于紧跟在^字符后面的那一个字符或字符区间。
(4)匹配特定的字符类别(匹配数字和匹配非数字)
元字符:\d 任何一个数字字符
\D 任何一个非数字字符
举列如下:
文本:
sales1.xls
orders3.xls
sales2.xls
sales3.xls
apacl.xls
europe2.xls
nam.xls
na2.xls
sa1.xls
nak.xls
pa2.xls
cal.xls
正则表达式:
.a[\d]\.xls
结果:
na2.xls
sa1.xls
pa2.xls
若上面的文本不变,正则表达式变为.a[\D]\.xls,则结果就会变为如下:
nam.xls
nak.xls
cal.xls
(5)匹配字母和数字(非字母和数字)
元字符:
\w 任何一个字母数字字符(大小写均可)或下划线字符(等价于[a-zA-Z0-9_])
\W任何一个非字母数字或下划线(等价于[^a-zA-Z0-9_])
举列:
文本:
11213
A1C2E3
48075
48237
M1B4F2
90046
H1H2H2
正则表达式:
\w\d\w\d\w\d
(6)匹配空白字符(非空白字符)
元字符:
\s 任何一个空白字符(等价于[\f\n\r\t\v])
\S 任何一个非空白字符(等价于[^\f\n\r\t\v ])
第五章--------重复匹配
(1)匹配一个或者多个字符
+ 匹配一个或者多个字符(至少一个,不匹配零个自负的情况)并且 匹配同一个字符(或字符集合)的多次重复也就说如果+前面的字符是一个确定的字符,那么他就匹配这个确定的字符一到多次。
举列:用+来匹配一个或者多个字符
正则表达式:\w+@\w\.\w+
文本&结果:
send personal emial to ben@forta.com.for questtions about a book use support@forta.com
Feel free to send unsolicited emial to spam@forta.com(wouldn't it be nice if it wrer that simple ,huh?)
(2)匹配零个或者多个字符
* 只要把它放在一个字符的后面,就可以匹配该字符(或者字符集合)连续出现0次或者多次。
举列:
正则表达式:\w+[\w.]*@[\w.]+\.\w+
hello .ben@forta.com is my email address.