一些细节的完善
在上篇文章中,我们简单使用了一个正则完成了一些东西,但是也发现了一些问题.那个在线工具并不怎么好用…
经常遇到输入之后,没有匹配.
这也是 web 程序经常遇到的尴尬.所以,我们使用本地应用来进行处理.
笔者的是 mac10.10,使用的工具叫做 RegExRx
.大家可以选择一款合适的使用.( windows 下的正则程序更加多,功能也很强大)
开始正则之旅
明确了正则的用途之后,我们开始使用正则表达式.还是从一些实际案例出发,我很讨厌一开始就摆上 N 多得概念,列举出 N 多得符号,根本不让人好好阅读嘛!
符号的延伸
上次我们使用了匹配数字的符号 \d
,这个是表示数字的意思,但是它只能表示一位数字,于是,我又使用了{m,n}
这个符号.
\d
还有一种表示方法就是 [0-9]
,[]
是字符串列举的意思.
比如 [abc]
表示匹配 a
或者b
或者c
,和\d
一样,它只能匹配一个.
常用模式的列举:
[0-9]
:表示数字 等价于 \d
[a-z]
:表示小写字母
[A-Z]
:表示大写字母
在列举的前面加上 ^
即可表示 非
,比如
[^0-9]
:表示非数字
简写的的形式比如 \d
,如果要取反,则小写改大写(熟悉 Vim 的人一定亲切),如:
\D
:表示非数字
\w
表示单词字符,在英语环境下,等价于 [_a-zA-Z0-9]
,就是常说的:字母数字下划线
同理,把它大写,就是取反
\W
表示非单词字符,除掉字母数字下划线的内容
匹配空白字符
\s
:表示空白字符( space),它和 [ \t\n\r]
等价(分别是 空格 制表符 换行符 回车符)
注:有些匹配工具不会高亮换行符号和回车符号
那么很自然的想到
\S
匹配非空白字符,和[ \t\n\r]
等价,当然,也可以 [^\s]
匹配任何字符
使用 .
可以匹配任何字符,一个点只能匹配一个
使用量词
在最开始的时候,我们已经使用了量词的符号 {}
,用法也已经解释过了.比如:
.{8}
匹配8个任意字符
但是在实际应用中,我们有三个特殊的量词是大量使用的:
?
:表示出现0次或者1次
*
:表示出现0次或者多次
+
:表示出现1次或者多次
结语
这次是一个比较枯燥的符号认知的过程.好在,常用的符号我们已经学习完毕,从下篇开始,我们做大量的练习,并学习更高级的知识