今天是2016年12月5日,天气晴朗,关于正则表达式的介绍
正则表达式是由以下几个部分组成
1)定界符:定义正则的边界
2)原子:是正则不可分割的最小组成单位
3)元字符:不能单独使用,是配合原子使用的,用来拓展原子的功能、修饰和限定原子
4)模式修正符:对整个正则的修正
下面我我们来按照顺序依次给大家介绍这四种组成部分
定界符:
$preg = '//';
其中的两个//就是正则的定界符,所有的正则语法写在//之间(模式修正符在//之外),除了使用//之外,还可以使用!!、||、@@等。除字母、数字和斜线“\”,其他任何字符都能做定界符。这里就不一一演示了,值得一提的是正则通常都用//表示,业内普遍使用//,为了代码可读性和方便别人维护,默认使用//来做定界符,我们作为初学者,就遵循这个规范来写吧。
原子:
原子是最小的组成单元。
$preg = '/a/';
其中a就是原子,这个正则的意思就是字母a。
其中有一些原子是通用的。例如你们可以想到表示所有数字的,表示所有字母的,下面介绍一些常用的通配符:
\d 表示所有数字,相当于[0-9]
\D 表示非数字,相当于[^0-9]
\w 表示字,相当于[a-zA-Z0-9_]
\W 表示非字,相当于[^a-zA-Z0-9_]
\s 表示打印字符,\n \t \
\S 表示非打印字符,除了空格回车垂直制表符等
元字符:
* 前面的原子匹配匹配任意次
+ 前面的原子匹配一次或多次
? 前面的原子匹配0次或者1次
| 前面的原子匹配两个或者多个分支(或的关系,两边出现一次即可匹配,优先级最低)
{n} 前面的原子匹配n次
{n,} 前面的原子匹配至少n次
{n,m} 前面的原子匹配n到m次
^或\A 目标字符串必须以什么什么开始(在多行中表示每一行第一个,在[]中表示非,例如[^a]就是除了a)
$或\Z 目标字符串必须以什么什么结尾(在多行中表示每行最后一个)
\b 单词边界
\B 除了单词以外的部分
() 1.改变优先级别2.将小原子变成大原子(add)*就是add这个单词任意次,不是d字符任意次3.子模式比如(http|https),在()中加?:取消子模式即(?:)4.反向引用
^与$ 要在两端,表示以什么什么开始和以什么什么结尾,例如'/^a$/',就是必须a开始,a结尾的字符串
模式修正符:
1.写在定界符右边
2.可以组合写,也可以单独写(就是可以写一个或者多个)
常用的有
i 不区分大小写
m 视为多行(^$每一行)
s 可以匹配换行
x 忽略空白
v 取消贪婪模式,或者使用'(.*?)'取消,使用'(.*?)'就不能使用u