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

正则表达式知识汇总

2013-04-02 22:29 197 查看
1、选择PHP正则表达式处理函数库

常用的有两种,一种是基于perl语言,使用“preg_”为前缀命名的函数,表达式都应该被包含在定界符中,如斜线(/"),

另一种是由POSIX (Portable Operation System interface) 扩展语法的正则表达式,使用“ereg_”开头。php中常用preg_.

常用函数:

preg_match()

preg_match_all()

preg_replace()

preg_split()

preg_grep();

preg_replace_callback()

2、正则表达式的组成:

由原子(如a到z)、元字符(*,+,?)及模式修正三部分组成。

3、正则表达式元字符:

正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。元字符既可以是放在 [] 中的任意单个字符(如 [a] 表示匹配单个小写字符 a ),也可以是字符序列(如 [a-d] 表示匹配 a 、 b 、 c 、 d 之间的任意一个字符,而 \w 表示任意英文字母和数字及下划线),下面是一些常见的元字符:  

.  匹配除 \n 以外的任何字符(注意元字符是小数点)。 

[abcde]  匹配 abcde 之中的任意一个字符 

[a-h]   匹配 a 到 h 之间的任意一个字符 

[^fgh]  不与 fgh 之中的任意一个字符匹配 

\w  匹配大小写英文字符及数字 0 到 9 之间的任意一个及下划线,相当于 [a-zA-Z0-9_] 

\W  不匹配大小写英文字符及数字 0 到 9 之间的任意一个,相当于 [^a-zA-Z0-9_] 

\s  匹配任何空白字符,相当于 [ \f\n\r\t\v] 

\S  匹配任何非空白字符,相当于 [^\s] 

\d 匹配任何 0 到 9 之间的单个数字,相当于 [0-9] 

\D  不匹配任何 0 到 9 之间的单个数字,相当于 [^0-9] 

[\u4e00-\u9fa5]  匹配任意单个汉字(这里用的是 Unicode 编码表示汉字的 )

4、用“\”取消一些特殊字符的意义,如“ “ ”,” * “,” + ”等,如果当做原子,必须像\"、\*、\+这样使用。

5、修饰符:对大小写敏感

我们看到的('/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html/i')中的最后一个"i"就是修饰符,表示忽略大小写,还有一个我们经常用到的是"x"表示忽略空格。

◆i :如果在修饰符中加上"i",则正则将会取消大小写敏感性,即"a"和"A" 是一样的。

◆m:默认的正则开始"^"和结束"$"只是对于正则字符串如果在修饰符中加上"m",那么开始和结束将会指字符串的每一行:每一行的开头就是"^",结尾就是"$"。

◆s:如果在修饰符中加入"s",那么默认的"."代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符!

◆x:如果加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。

◆e:本修饰符仅仅对于replacement有用,代表在replacement中作为PHP代码。

◆A:如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说"/a/A"匹配"abcd"。

◆E:与"m"相反,如果使用这个修饰符,那么"$"将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。

◆U:和问号的作用差不多,用于设置"贪婪模式"。

6、正则表达式限定符

上面的元字符都是针对单个字符匹配的,要想同时匹配多个字符的话,还需要借助限定符。下面是一些常见的限定符 ( 下表中 n 和 m 都是表示整数,并且 0<n<m) : 

 

*  匹配 0 到多个元字符,相当于 {0,} 

?  匹配 0 到 1 个元字符,相当于 {0,1} 

{n}  匹配 n 个元字符 

{n,}  匹配至少 n 个元字符 

{n,m}  匹配 n 到 m 个元字符 

+  匹配至少 1 个元字符,相当于 {1,} 

\b  匹配单词边界 

^  字符串必须以指定的字符开始 

$  字符串必须以指定的字符结束

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息