正则表达式描述了一种字符串匹配的模式,通过这个模式在特定的函数中对字符串进行匹配、查找、替换及分割等操作。正则表达式作为一个匹配的模板,是由原子(普通字符,例如字符a到z)、有特殊功能的字符(称为元字符,例如*、+和?等),以及模式修正符三部分组成的文字模式。一个最简单的正则表达式模式中,至少也要包含一个原子,如“/a/”。而且在与Perl兼容的正则表达式函数中使用的模式时,一定要给模式加上定界符,即将模式包含在两个反斜线“/”之间。一个HTML连接的正则表达式模式如下所示:
‘/<a.*?(?:|\\t|\\r|\\n)?href=[\‘"]?(.+?)[\‘"]?(?:(?:|\\t|\\r|\\n)+.*?)?>(.+?)<\/a.*?>/sim’ //匹配连接的正则
在网页中任何HTML有效的连接标签,都可以和这个正则表达式的模式匹配上。该模式就用到了编写正则表达模版的原子、元字符和模式修正符三个组成部分,将其拆分后如下所示。
★定界符使用的是两个斜线“/”,将模式放在它之间声明。
★原子用到了<、a、href、=、’、”、/、>等普通字符和\t、\r、\n等转义字符。
★元字符使用了[]、()、|、.、?、*、+等具有特殊含义的字符。
★用到的模式修正符是在定界符最后一个斜线之后的三个字符“s”、“i”和“m”。
对于原子、元字符,以及模式修正符的使用将在后面详细介绍。首先编写一个示例,了解一下正则表达式的应用。通过PHP中给我们提供的preg_match()函数,将上例中定义的正则表达式。该函数有两个必选参数,第一个参数需要提供用户编写的正则表达式模式,第二个参数需要一个字符串。该函数的作用就是在第二个字符串参数中,搜索第一个参数给正确表达式匹配的内容。如果匹配成功则返回真。代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 |
|
在上面的代码中,使用正则表达式的语法规则,定义个一匹配HTML中连接标签的模式并存放在变量$pattrn中。又顶一个字符串变量$content,在字符串中如果包含有效的HTML连接标签,则使用preg_match()函数时,就可以按$pattrn模式所定义的格式搜索到连接标签。
>> 本文固定链接: http://php.ncong.com/php_course/php_zend/regex-regular.html
>> 转载请注明: 恩聪php 2014年07月31日 于 恩聪PHP学习教程 发表