您的位置:首页 > 编程语言 > PHP开发

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--------------- $
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: