php基础8———正则表达式1

来源:互联网 发布:php写文件换行 编辑:程序博客网 时间:2024/06/16 11:50

正则表达式并不是某个语言特有的,只能说是某个语言是否支持正则。

正则表达式也可以看做是一个语言。

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--------------- $


0 0
原创粉丝点击