PHP的正则表达式

重点内容正则表达式(当记不住怎么用的时候建议去这里重新学一下:http://www.imooc.com/code/563
<重要内容已经加粗>

0.” / “分隔符:分隔符可以是非数字、非反斜线、非空格的任意字符。经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~),如果模式中包含分隔符,则分隔符需要使用反斜杠(\)进行转义。
” . ” 表示除换行符外的任意一个字符. 例如/r.t/表明rot、ret等等;但不表示 root 因为只是一个字符.
” () “表示对字符串进行分组

-

1.” [] “方括号
说明:表明匹配方括号内多个字符中的一个字符,例如/[Ll]ove/,它就能匹配到Love或者love

-

2.” - “定义字符范围集(记得用[]把范围括起来)
说明:例如[0-9]表明从0到9的范围或者[a-z]从a到z的范围;以及[0-9a-zA-Z]这表明在0-9或者a-z或者A-Z的任何一个字符.

-

3.” ^ “在范围集中使用表明取反
说明:例如[^0-9]表明从0到9以外的范围。也就是说取0到9的补集.
” ^ ” 断言目标的开始位置(或在多行模式下是行首) //就是表明这里是开头,前面不能有字符了。

” $ ” 断言目标的结束位置(或在多行模式下是行尾) //就是表明这里是结尾,后面不能有字符了。

以下为重复和限定符

4.” ? ” 表明出现0次或者1次. 例如/love?zy/表明e至少出现1次或者0次,也即是说能匹配到lovezy和lovzy.

5.” * ” 表明出现0次或者多次. 反正就是你出不出现都行.

6.” + ” 表明至少出现1次.

7.” | ” 开始一个可选分支

-

8.{min,max}
说明:min和max都是非负整数.
写法:{min,max} 必须出现min到max次
{min,} 至少出现min次
{,max} 至多出现max次
例如:/love{2,3}lqx/表明e的次数必须出现2到3次;/love{3}zy/表明e必须出现3次.

-

9.使用{}、+、、?时应注意匹配引擎的默认贪婪匹配问题,一般用懒惰匹配(在限定符后面加?表明懒惰匹配,例如/love+?lqx/或者/love?zy/)来处理
说明:贪婪匹配是从开始一直到不能匹配的地方开始”返回”匹配,懒惰是从上一次匹配正确的地方重新开始匹配. 具体请上网查询.

-

10.开始与结束
” ^ “表明以什么开始(注意它与取反的区别)
/^gt/ 表明以gt开始的字符串,可以匹配到 gt_orige 不能匹配到 orige_gt_hahha
/ gt/gt,origegtgtorige/gtorige / 表明只匹配字符串gtorige.
也可以指定在什么字符位置之后开始,例如(当然也可以用这种方式在什么字符位置之前)
//请修改变量p的正则表达式,使他能够匹配str中的姓名

$p = '/:(\w+\s\w+)/';//在:的后面开始
$str = "name:steven jobs";
preg_match($p, $str, $match);
echo $match[1]; //结果为:steven jobs,注意是1,0是整个模式匹配到的内容

模式修正符

说明:
i : 忽略大小写
m : 多行文本模式,行起符”^”和结束符”$”表明除了匹配开头字符串和结尾字符串外还匹配“换行符”.
s : 单行文本模式,换行符当普通字符对待,符号”.”可以匹配到包括换行符在内的任何字符。。[^\s]代表非空白符。[^\s]+表示一次或多次匹配非空白符。
x : 忽略空白符
使用方式
写在表达式外面 例如:/LOVE/i 可以匹配到 love LoVe等等
写在表达式里面 例如:/(?i)LOVE/ 可以匹配到 love LoVe等等
写在表达式里面 例如:/(?i)LO(?-i)VE/ 加了”-“的表明关闭模式 这表明前面的LO对大小写不敏感,后面的VE对大小是敏感的。

-

12.转义字符
\w匹配字母或数字或下划线
\s\S匹配任意的空白符,包括空格、制表符、换行符
\d匹配任意数字

-

13.正则表达式的使用

a)preg_match(string pattern,string str,array matches,int flags)函数
pattern: str:待匹配的文本
matches:() matches[0]表明包含整个模式匹配的文本, matches[1]. flags:(可选参数)可以设置为PREG_OFFSET_CAPTRUE,如果设置了该标记,则对每个出现的匹配结果会同时返回其在字符串中的偏移量,返回的数组是一个二维数组,每个数组单元的第一项为匹配的字符串,第二项为偏移量。
返回值:则表达式匹配成功返回1否则返回0.
说明:该函数找到一个匹配后就立即返回.

b)preg_match_all(string pattern,string str,array matches,int flags)函数
前面三个参数和preg_match()函数一样.
flags有以下几个可选值:
PREG_PATTERN_ORDER:(默认值) 对搜索结果排序,使得 matches[0] matches[1]为正则表达式中的第一组所匹配字符所组成的数组.
PREG_SET_ORDER:对搜索结果进行排序,使得 matches[0], matches[1]为第二组匹配项数组。
PREG_OFFSET_CAPTRUE:preg_match函数有解释。

c)preg_replace(mixed pattern,mixed replacement,mixed str,int limit)//替换字符串
pattern replacement:用来替换的字符串
str: Limit:(可选参数)

d)preg_replace_callback(mixed pattern,callback callback,mixed str,int limit)
说明:可以在替换字符串前,先做一些处理。

e)preg_split(string pattern,string str , int limit,int flags)
pattern:. str:待分割的字符串.
limit:() flags:(可选参数)
返回值:返回分割后的字符串(数组).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值