会员登录 | 会员注册 | 意见建议 | 网站地图

站长资源综合门户

当前位置:首页 > 站长学院 > 编程程序 > 经常用到的PHP正则表达达式

经常用到的PHP正则表达达式

时间:2012-06-04 19:45:38   作者:   来源:   点击:

echo "n";

 

字符宽度:零

验证零字符代

$regex = '/HE(?=L)LO/i';

$str = 'HELLO';

$matches = array();

if(preg_match($regex, $str, $matches)){

var_dump($matches);

}

echo "n";

打印不出结果!

$regex = '/HE(?=L)LLO/i';

$str = 'HELLO';

$matches = array();

if(preg_match($regex, $str, $matches)){

var_dump($matches);

}

echo "n";

能打印出结果!

说明:(?=L)意思是HE后面紧跟一个L字符。但是(?=L)本身不占字符,要与(L)区分,(L)本身占一个字符。

 

捕获数据

没有指明类型而进行的分组,将会被获取,供以后使用。

指明类型指的是通配符。所以只有圆括号起始位置没有问号的才能被捕捉。

在同一个表达式内的引用叫做反向引用。

调用格式: 编号(如1)。

$regex = '/^(Chuanshanjia)[ws!]+1$/';

$str = 'Chuanshanjia thank Chuanshanjia';

$matches = array();

if(preg_match($regex, $str, $matches)){

var_dump($matches);

}

echo "n";

避免捕获数据

格式:(?:pattern)

优点:将使有效反向引用数量保持在最小,代码更加、清楚。

命名捕获组

格式:(?P<组名>) 调用方式 (?P=组名)

$regex = '/(?Pchuanshanjia)[s]Is[s](?P=author)/i';

$str = 'author:chuanshanjia Is chuanshanjia';

$matches = array();

if(preg_match($regex, $str, $matches)){

var_dump($matches);

}

echo "n";

运行结果

 

惰性匹配(记住:会进行两部操作,请看下面的原理部分)

格式:限定符?

原理:"?":如果前面有限定符,会使用最小的数据。如“*”会取0个,而“+”会取1个,如过是{3,5}会取3个。

先看下面的两个代码:

代码1.

$regex = '/heL*/i';

$str = 'heLLLLLLLLLLLLLLLL';

if(preg_match($regex, $str, $matches)){

var_dump($matches);

}

echo "n";

结果1.

代码2

$regex = '/heL*?/i';

$str = 'heLLLLLLLLLLLLLLLL';

if(preg_match($regex, $str, $matches)){

var_dump($matches);

}

echo "n";

结果2

代码3,使用“+”

$regex = '/heL+?/i';

$str = 'heLLLLLLLLLLLLLLLL';

if(preg_match($regex, $str, $matches)){

var_dump($matches);

}

echo "n";

结果3

代码4,使用{3,5}

$regex = '/heL{3,10}?/i';

$str = 'heLLLLLLLLLLLLLLLL';

if(preg_match($regex, $str, $matches)){

var_dump($matches);

}

echo "n";

结果4

 

正则表达式的注释

格式:(?# 注释内容)

用途:主要用于复杂的注释

贡献代码:是一个用于连接MYSQL数据库的正则表达式

$regex = '/
^host=(?<!.)([d.]+)(?!.) (?#主机地址)
|
([w!@#$%^&*()_+-]+) (?#用户名)
|
([w!@#$%^&*()_+-]+) (?#密码)
(?!|)$/ix';

$str = 'host=192.168.10.221|root|123456';
$matches = array();

if(preg_match($regex, $str, $matches)){
var_dump($matches);
}

echo "n";

分享到:

网友评论

热门编程程序