`
webcode
  • 浏览: 5939969 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

正则表达式学习笔记-要点整理

 
阅读更多

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

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics