php5与mysql5 web 开发技术详解-5 第二篇(需整理合并) 正则表达式

1、介绍和作用:

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的语法。

主要作用:分割、匹配、查找、替换字符串

 

2、php中两个常用的正则函数

preg_match(mode,string subject,array matches)

ereg(mode,string subject,array regs)

 

3、正则表达式中包括的元素

(1) 、原子 (普通字符:a-z A-Z 0-9、原子表、转移字符)

(2) 、元字符 (有特殊功能的字符)

(3)、模式匹配符(i、m 、S 、U ...)

 

4、正则表达式中的“原子”

(1) a-z A-Z 0-9  //最常见的字符

(2)(abc)(skd) //用圆括号包含起来的单元复合 。一个整体做匹配

(3) [abcs] [^abd] //用方括号包含的原子表,原子表中的^ 代表排除或相反内容 。出现其中一个即可。

(4)转义字符

\d 包含所有数字[0-9]

\D 除所有数字外[^0-9]

\w 包含所有英文字符 [a-z A-Z0-9_]

\W 除有英文字符外 [^a-z  A-Z0-9_]

\s 包含空白区域如回车、换行、分页等[\f\n\r]

 

5、正则函数举例

$mod = "#abc#"

$str = "1234abcdefabdef";

if(preg_match($mod, $str , $arr)){
   echo "匹配成功";

}else{

   echo "匹配不成功";

}

 

6、正则表达式元字符

 特殊符号、运算符号

*   匹配前一个内容的0次1次或多次

.    匹配前一个内容的0次1次或多次,但不包含回车换行

+   匹配前一个内容的1次或多次

?   匹配前一个内容的0次或1次

|    选择匹配。类似php中的|  ()

^    匹配字符串首部内容

$    匹配字符串尾部内容

\b 匹配单词边界,边界可以是空格或者特殊符合

\B 匹配除带单词边界以外内容

{m} 匹配前一个内容的重复次数为M次

{m,} 匹配前一个内容的重复次数大于等于M次

{m,n} 匹配前一个内容的重复次数M次到N次

( ) 合并整体匹配,并放入内存,可使用\1 \2…依次获取

 

举例:

$mod = " /g.*gle/" ; //0个、1个或多个字符

$mod2 = "/g.?gle/" ;//0个或1个字符

$mod 3= "/g.+gle/ "; //1个或多个字符

$str = "google";

$mod 4 =  "/google|baidu/";

$str4 = "google12445wbaidu";

$mod5 = "/^google$/"

 

$mod6 = "/\bis\b/";

$str6 = "what is this";

 

$mod7 = "/go{1}gle/";    //"/go{1,}gle/"  ,"/go{2,5}gle/"

$str7 = "google"; 

 

$mod8 = "/2009(.*)02\\1(15)";  //  \\1即前面(.*)的内容 。日期匹配 "/[0-9]{2-4}(.*)[0-9]{1,2}\\1[0-9]{1,2}/"

 

$str8 = "2009-02-15"; //  也匹配"2009/02/15" ,前后保持一致即匹配

 

7、正则表达式中的“模式修正符”

运算顺序

( )  圆括号因为是内存处理所以最高

* ? +  { } 重复匹配内容其次

^ $ \b 边界处理第三

|  条件处理第四

最后按照运算顺序计算匹配

模式修正符

i 正则内容在匹配时候不区分大小写(默认是区分的)

m 在匹配首内容或者尾内容时候采用多行识别匹配

S 将转义回车取消是为单行匹配如. 匹配的时候

x 忽略正则中的空白

A 强制从头开始匹配

D 强制$匹配尾部无任何内容 \n

U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束,

    常用在采集程序上的正则表达式

 

8、正则表达式在PHP中的应用

匹配功能 、替换功能   、分割功能

(1)、匹配功能

preg_match_all 全部匹配函数

preg_match_all ( string pattern, string subject, array matches [, int flags] )

对结果排序使 $matches[0] 为全部模式匹配的数组

用途:截取比较详细的内容,采集网页,分析文本

(2)替换功能

preg_replace 正则替换函数

preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )

通过正则表达式来替换相关内容,类似之前学过的str_replace字符串替换,但

功能要强于它。

提示:a、替换内容可以是一个正则也可以是数组正则

           b、替换内容可以通过修正符e来解决替换执行内容

用途:替换一些比较复杂的内容上,也可以用于内容的转换上

(3)分割功能 

preg_split 正则切割

preg_split ( string pattern, string subject [, int limit [, int flags]] )

通过正则表达式来切割相关内容,类似之前学过的explode切割函数,但explode

只能按照一种方式切割有局限性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值