php基础8———正则表达式1
2014-05-18 12:56
543 查看
正则表达式并不是某个语言特有的,只能说是某个语言是否支持正则。
正则表达式也可以看做是一个语言。
1,正则表达式是描述字符串排列组合的一种自定义的语法规则。
2,能用字符串处理函数完成的任务,就不要使用正则。
3,有一些复杂的操作,只能用正则完成。
4,正则表达式必须与函数一起使用,与不同的函数搭配起到不同的作用
在php中有两套正则表达式函数库:
1,POSIX 扩展正则表达式函数(php4),以ereg_开头
2,perl 兼容正则表达式函数(php5),以preg_开头
这两套函数的功能一样,但perl比POSIX的效率要高,所以推荐使用perl
所以这里只学perl兼容的。
一,正则的语法: “/原子和元字符/修正符”,这里的“/”是定界符,有些语言是不需要定界符的
1,定界符:除了字母,数字和正斜线“\”之外的任何字符都可以为定界符
如 “| |” “/ /” "{ }" "!!",没有特殊需要就使用 “/ /”
2,原子:原子是正则表达式的最基本的组成单位,一个正则表达式,至少必须包含一个原子,可以单独出现
如下:
1,所有打印字符:可以在屏幕上输出的字符串
2,非打印字符:看不到的,如空格等
3,如果是有特殊意义的字符,就需要用“\”来转义,只要你怀疑是特殊的字符,都可以用转义字符来转义
如 . * + ? 等 ====>
\. \* \+ \?
4,一些特殊含义的原子:
\d :代表任意一个十进制的数字 ======== [0-9]
\D :代表任意一个出数字之外的字符 ======== [^0-9]
\s :任意一个空白符,如:空格,\n\r\t\f等 ======== [\n\r\t\f ]
\S :表示任意一个非空白符 ======== [^\n\r\t\f ]
\w :表示任意一个字 a-zA-Z0-9_ ======== [a-zA-Z0-9_]
\W :任意一个非字 ======== [^a-zA-Z0-9_]
等
5,可以自己定义元字符,用【】,代表匹配【】中的任意一个元字符
【】中可以使用-,表示一个范围
【】中的^,表示取反,表示出了原子表中的其它所有原子,^必须放在最前面
3,元字符:一种特殊的字符,是来修饰原子的,不可以单独出现,若想要单独出现需要转义
* :表示其前一个原子可以出现0次,1次,或多次===========>{0,}
+:表示其前一个原子可以出现1次,或多次 ===========>{1,}
?:表示其前一个原子可以出现0次或1次,要么有,要么没有===>{0,1}
{ }:定义前面原子出现的次数,
{n}:代表前面的原子出现n次,必须是n次
{m,n}:代表前面的原子出现m到n次
{n, }:代表前面的原子最少出现n次
. :默认情况下,表示除 换行符 外的任意一个字符
^:当^不放在【】中时,如"^abc",表示字符串必须以abc开头
&:如"abc$",表示字符串必须以abc结尾
| :表示或的关系:如"a|b",表示a或b,它的优先级最低:如"abc|def"表示abc或def,而不是abcef或abdef
\b:表示一个边界(空格)
\B:表示一个非边界(空格)
( ):-------比较重要
1,作为大原子使用,表示一些原子的整体:如"(abc)|(def)",表示abc或def
2,改变优先级
3,作为子模式使用,表示只取出括号中的模式
4,可以用(?: ),取消子模式,只作为大原子使用
5,反向引用:可以在模式中直接将子模式取出来,在作为正则表达式的模式的一部分,
如果是在正则表达式像替换函数preg_replace函数中,可以讲子模式取出,在被替换的字符串中使用
\1 表示取出第一个子模式 \2 表示取出第二个子模式 \3 表示取出第三个子模式 等等
注意是单引号还是双引号引起来的正则,双引号需要这样"\\1",单引号这样"\1"
4,模式修正符号:是对整个正则表达式调优用的,也可以说是对正则表达式的扩展
1,就是几个字母,每个字母代表不同的意义
2,可以一次使用一个,也可以一次使用多个
如:
i---------------表示不区分大小写
m-------------默认情况,将字符串视为一行,加上m可以表示多行,意思就是原来是什么就是什么
s--------------表示单行,与m的意思相反,元字符中的"."默认不能表示换行符号,将字符串视为单行
加上m后,"."代表换行符,就改变了点的意义
x---------------表示模式中的空白,忽略不计
e---------------必须使用在preg_replace函数中
U---------------表示非贪婪模式,"?"也可以表示非贪婪模式
A-------------- ^
Z--------------- $
正则表达式也可以看做是一个语言。
1,正则表达式是描述字符串排列组合的一种自定义的语法规则。
2,能用字符串处理函数完成的任务,就不要使用正则。
3,有一些复杂的操作,只能用正则完成。
4,正则表达式必须与函数一起使用,与不同的函数搭配起到不同的作用
在php中有两套正则表达式函数库:
1,POSIX 扩展正则表达式函数(php4),以ereg_开头
2,perl 兼容正则表达式函数(php5),以preg_开头
这两套函数的功能一样,但perl比POSIX的效率要高,所以推荐使用perl
所以这里只学perl兼容的。
一,正则的语法: “/原子和元字符/修正符”,这里的“/”是定界符,有些语言是不需要定界符的
1,定界符:除了字母,数字和正斜线“\”之外的任何字符都可以为定界符
如 “| |” “/ /” "{ }" "!!",没有特殊需要就使用 “/ /”
2,原子:原子是正则表达式的最基本的组成单位,一个正则表达式,至少必须包含一个原子,可以单独出现
如下:
1,所有打印字符:可以在屏幕上输出的字符串
2,非打印字符:看不到的,如空格等
3,如果是有特殊意义的字符,就需要用“\”来转义,只要你怀疑是特殊的字符,都可以用转义字符来转义
如 . * + ? 等 ====>
\. \* \+ \?
4,一些特殊含义的原子:
\d :代表任意一个十进制的数字 ======== [0-9]
\D :代表任意一个出数字之外的字符 ======== [^0-9]
\s :任意一个空白符,如:空格,\n\r\t\f等 ======== [\n\r\t\f ]
\S :表示任意一个非空白符 ======== [^\n\r\t\f ]
\w :表示任意一个字 a-zA-Z0-9_ ======== [a-zA-Z0-9_]
\W :任意一个非字 ======== [^a-zA-Z0-9_]
等
5,可以自己定义元字符,用【】,代表匹配【】中的任意一个元字符
【】中可以使用-,表示一个范围
【】中的^,表示取反,表示出了原子表中的其它所有原子,^必须放在最前面
3,元字符:一种特殊的字符,是来修饰原子的,不可以单独出现,若想要单独出现需要转义
* :表示其前一个原子可以出现0次,1次,或多次===========>{0,}
+:表示其前一个原子可以出现1次,或多次 ===========>{1,}
?:表示其前一个原子可以出现0次或1次,要么有,要么没有===>{0,1}
{ }:定义前面原子出现的次数,
{n}:代表前面的原子出现n次,必须是n次
{m,n}:代表前面的原子出现m到n次
{n, }:代表前面的原子最少出现n次
. :默认情况下,表示除 换行符 外的任意一个字符
^:当^不放在【】中时,如"^abc",表示字符串必须以abc开头
&:如"abc$",表示字符串必须以abc结尾
| :表示或的关系:如"a|b",表示a或b,它的优先级最低:如"abc|def"表示abc或def,而不是abcef或abdef
\b:表示一个边界(空格)
\B:表示一个非边界(空格)
( ):-------比较重要
1,作为大原子使用,表示一些原子的整体:如"(abc)|(def)",表示abc或def
2,改变优先级
3,作为子模式使用,表示只取出括号中的模式
4,可以用(?: ),取消子模式,只作为大原子使用
5,反向引用:可以在模式中直接将子模式取出来,在作为正则表达式的模式的一部分,
如果是在正则表达式像替换函数preg_replace函数中,可以讲子模式取出,在被替换的字符串中使用
\1 表示取出第一个子模式 \2 表示取出第二个子模式 \3 表示取出第三个子模式 等等
注意是单引号还是双引号引起来的正则,双引号需要这样"\\1",单引号这样"\1"
4,模式修正符号:是对整个正则表达式调优用的,也可以说是对正则表达式的扩展
1,就是几个字母,每个字母代表不同的意义
2,可以一次使用一个,也可以一次使用多个
如:
i---------------表示不区分大小写
m-------------默认情况,将字符串视为一行,加上m可以表示多行,意思就是原来是什么就是什么
s--------------表示单行,与m的意思相反,元字符中的"."默认不能表示换行符号,将字符串视为单行
加上m后,"."代表换行符,就改变了点的意义
x---------------表示模式中的空白,忽略不计
e---------------必须使用在preg_replace函数中
U---------------表示非贪婪模式,"?"也可以表示非贪婪模式
A-------------- ^
Z--------------- $
相关文章推荐
- PHP核心技术与最佳实践 读书笔记 第三章 正则表达式基础与应用
- PHP基础教程之正则表达式
- php【基础练习十二】正则表达式
- PHP基础-正则表达式
- 前端学PHP之正则表达式基础语法
- PHP正则表达式基础
- PHP正则表达式完全教程之基础篇
- 正则表达式--php基础最详细教程
- PHP正则表达式基础入门
- 前端学PHP之正则表达式基础语法
- PHP基础知识 php的分页原理,url函数和正则表达式基础
- 【零基础学习PHP 五】正则表达式在php中的使用
- PHP基础示例:用正则表达式修改配置信息
- PHP正则表达式基础和应用
- PHP正则表达式 - 基础
- 2016/3/18 ①PHP基础 ② PHP函数 ③其他函数(随机数、关于日期) ④正则表达式 ⑤字符串处理
- PHP基础常用正则表达式
- MYSQL+PHP学习,从最基础的知识开始(正则表达式)
- 前端学PHP之正则表达式基础语法
- PHP 基础知识四(正则表达式)