正则表达式(Perl兼容风格-PHP)小结

正则表达式(Perl兼容风格-PHP)

  • 组成
    • 1:定界符
      • 反斜线为定界符,表达式放在两个/中间
      • 例如:/a/
    • 2:原子字符
      • 1:普通字符
      • 2:非打印字符
        • 字符和含义 :
          \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。 
          \f 匹配一个换页符。等价于 \x0c 和 \cL。
          \n 匹配一个换行符。等价于 \x0a 和 \cJ。
          \r 匹配一个回车符。等价于 \x0d 和 \cM。
          \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
          \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
          \t 匹配一个制表符。等价于 \x09 和 \cI。
          \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

    • 3:元字符
      • 元字符:构建表达式的具有特殊含义的字符,表示其本身需要加上转义符\

        表示通用的字符类型:
        . 匹配除换行以外的所有字符(使用s开关也匹配换行符)
        \d 匹配数字         
        \D 匹配非数字        
        \s 匹配空白字符         
        \S 匹配非空白字符         
        \w 任意一个数据字母或下划线 [a-zA-Z0-9_]        
        \W 无字母数字的字符,即[^a-zA-Z0-9_]

        限定边界的元字符:
        \A 只匹配字符串开头
        \b 匹配单词边界         
        \B 匹配单词边界以外的字符              
        $ 匹配行尾        
        ^ 匹配行首                

        限定匹配次数的元字符:
        * 匹配0到多次前面的一个原子字符
        + 匹配1到多次前面的一个原子字符+
        ? 匹配0到1次前面的一个原子字符
        {n} 匹配n次前面的一个原子字符
        {n,} 匹配n至更多次前面的一个原子字符
        {n,m} 匹配n至m多次前面的一个原子字符

        其他类别的元字符
        \ 引出下一个元字符         
        [] 匹配一组字符其中之一         
        () 一个字符分组,可用于匹配或定义一个反引用
        | 或,匹配满足多个条件之一的

    • 4:模式修正符-开关
      • 修饰符放在正则表达式后面,例如 /who/,主要有:        
        i 不区分大小写        
        g 全局搜索         
        m 将字符串(如果含有回车换行符)视为多行 ,有多个行首和行尾(^和$)
        s 将一个字符串视为一行,把回车换行符是为普通字符,只有一个行首和行尾(^和$)
        x 忽略注释和空白    
        U 第一次匹配后就停止

  • php的preg_match()
    • 介绍:preg_match(PHP 3 >= 3.0.9, PHP 4, PHP 5) -- 进行正则表达式匹配

      语法说明
        int preg_match( string pattern, string subject [, array matches [, int flags]] )
        在 subject 字符串中搜索与pattern给出的正则表达式相匹配的内容。
        如果提供了 matches,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
        flags 可以是下列标记:
        PREG_OFFSET_CAPTURE如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其偏移量。本标记自PHP 4.3.0 起可用。
        flags 参数来自 PHP 4.3.0 起可用。
        preg_match() 返回 pattern 所匹配的次数。要么是 0 次(没有匹配)或 1 次,因为 preg_match() 在第一次匹配之后将停止搜索。如果出错 preg_match() 返回FALSE。

  • 举例
    • //从[img]串中取出图片url地址
            $my_message = "[table]  [tr][td][url=http://www.abc.com/item.htm?id=15623505][img=600,492]http://img03.abc.com/bao/uploaded/i3/T17Di9XXlh.jpg[/img][/url]  [/td][/tr]  [/table]";            
      // 从[img]串中取出图片的长宽和url地址         
      if (preg_match("/\[img=(\d{1,4})[x|\,](\d{1,4})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/ies",
      $my_message['message'],
      $my_first_images))     
      {           echo "the img url is ".$my_first_images[3];       }
      //结果是:http://img03.abc.com/bao/uploaded/i3/T17Di9XXlh.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值