PHP中的正则函数

PHP中有2套正则函数,两者功能差不多

  1. 由PCRE(Perl Compatible Regular Expression,兼容Perl的正则表达式)库提供的函数,以preg_为前缀命名。现代的编程语言和软件中一般都是用PCRE库
  2. 由POSIX(Portable Operation System Interface of UNIX, UNIX可移植操作系统接口)扩展提供的函数,以ereg_为前缀命名。通常UNIX的一些工具和较老软件中会使用POSIX风格的正则。另外,一些数据库中也提供了POSIX风格的正则表达式。

自PHP5.3以后,就不再推荐使用POSIX正则函数库,若程序中使用了则会报Deprecated级别的错误,这种情况通常在一些老的代码中比较常见

正则表达式的组成

  • 分隔符

除了字母、数字、反斜线、空白符意外的任何字符,推荐使用(/ # ~),不推荐使用()

  • 表达式

一些特殊字符和非特殊字符串组成

  • 修饰符

用于开启或关闭某种功能/模式

测试工具一般用Firefox的扩展Regular Expression Tester即可

正则表达式中的元字符

元字符就是具有特殊意义的专用字符,用来规定其前导字符在目标对象中的出现模式

元字符描述
.匹配除换行符以外的任意字符
w匹配字母、数字、下划线或汉字
s匹配任意空白字符
d匹配数字
b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束
-表示范围
[]匹配括号中的任意一个字符
*、+、?量词

反义就是一些已知元字符相反,并且为大写形式。比如\d表示数字,而\D就表示非数字

量词

  1. *匹配重复任意次(可能是0次
  2. +匹配重复1次或更多次
  3. ?匹配重复0次或1次
  4. {n}匹配重复n次
  5. {n,}匹配重复n次或多次
  6. {n,m}匹配重复n到m次

转义

  1. 反斜杠()
  2. Q和E之间的元字符都会作为普通字符来匹配

举个栗子

`用尖括号括起来、以a开头的字符串 <a[^*]+>`