正则表达式(Perl兼容风格-PHP)
- 组成
- 1:定界符
- 反斜线为定界符,表达式放在两个/中间
- 例如:/a/
- 2:原子字符
- 1:普通字符
- 2:非打印字符
-
字符和含义 :
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
-
- 3:元字符
-
元字符:构建表达式的具有特殊含义的字符,表示其本身需要加上转义符\
表示通用的字符类型:
. 匹配除换行以外的所有字符(使用s开关也匹配换行符)
\d 匹配数字
\D 匹配非数字
\s 匹配空白字符
\S 匹配非空白字符
\w 任意一个数据字母或下划线 [a-zA-Z0-9_]
\W 无字母数字的字符,即[^a-zA-Z0-9_]
限定边界的元字符:
\A 只匹配字符串开头
\b 匹配单词边界
\B 匹配单词边界以外的字符
$ 匹配行尾
^ 匹配行首限定匹配次数的元字符:
* 匹配0到多次前面的一个原子字符
+ 匹配1到多次前面的一个原子字符+
? 匹配0到1次前面的一个原子字符
{n} 匹配n次前面的一个原子字符
{n,} 匹配n至更多次前面的一个原子字符
{n,m} 匹配n至m多次前面的一个原子字符其他类别的元字符
\ 引出下一个元字符
[] 匹配一组字符其中之一
() 一个字符分组,可用于匹配或定义一个反引用
| 或,匹配满足多个条件之一的
-
- 4:模式修正符-开关
-
修饰符放在正则表达式后面,例如 /who/,主要有:
i 不区分大小写
g 全局搜索
m 将字符串(如果含有回车换行符)视为多行 ,有多个行首和行尾(^和$)
s 将一个字符串视为一行,把回车换行符是为普通字符,只有一个行首和行尾(^和$)
x 忽略注释和空白
U 第一次匹配后就停止
-
- 1:定界符
- php的preg_match()
-
介绍:preg_match(PHP 3 >= 3.0.9, PHP 4, PHP 5) -- 进行正则表达式匹配
语法说明
int preg_match( string pattern, string subject [, array matches [, int flags]] )
在 subject 字符串中搜索与pattern给出的正则表达式相匹配的内容。
如果提供了 matches,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
flags 可以是下列标记:
PREG_OFFSET_CAPTURE如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其偏移量。本标记自PHP 4.3.0 起可用。
flags 参数来自 PHP 4.3.0 起可用。
preg_match() 返回 pattern 所匹配的次数。要么是 0 次(没有匹配)或 1 次,因为 preg_match() 在第一次匹配之后将停止搜索。如果出错 preg_match() 返回FALSE。
-
- 举例
-
//从[img]串中取出图片url地址
$my_message = "[table] [tr][td][url=http://www.abc.com/item.htm?id=15623505][img=600,492]http://img03.abc.com/bao/uploaded/i3/T17Di9XXlh.jpg[/img][/url] [/td][/tr] [/table]";
// 从[img]串中取出图片的长宽和url地址
if (preg_match("/\[img=(\d{1,4})[x|\,](\d{1,4})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies",
$my_message['message'],
$my_first_images))
{ echo "the img url is ".$my_first_images[3]; }
//结果是:http://img03.abc.com/bao/uploaded/i3/T17Di9XXlh.jpg
-