• 正则表达式学习笔记


    分隔符

    1) 使用PCRE函数时,正则表达式需由分隔符包裹。分隔符可以使用任意非字母数字,非反斜线,非空白字符。

    2) 常使用的分隔符:/pattern/,#pattern#,+pattern+,{pattern}[当分隔符经常在pattern内出现时可以使用其他分隔符来提高可读性]

    3) 分隔符在模式内进行匹配时,使用反斜线进行转义

    正则字符

    .    匹配不包括换行的任意字符

      在php的s修饰符[单行模式]可以匹配换行,如$pattern=/<div>(.*?)</div>/s可以匹配div中多行数据[此处的?表示非贪婪匹配]

     : 空格、tab、换行

      [sS]可以匹配包含换行的任意字符

     :  表示匹配0~n个

    +  :  表示匹配1~n个

      :  转义,一个特殊字符前加表示转义为普通字符,eg:[ , ] , - , , ^

    [ ]  :  单字符数据多选一

      [abc]=>a Or b Or c

      [^abc]=>Not a && Not b && Not c

      [0-9a-zA-Z]=>字符取值范围

    ^   :  开始或排除

      ^www=>字符串开始

      [^abc]=>排除

    $  :  字符串结束

    {n,m}  :  循环次数,最少匹配n次,最多匹配m次

      [0-9]{1,3}=>在0-9范围内循环1 Or 2 Or 3次

      [0-9]{3}=>循环指定次数,{3,3}简写成{3}

      {1}=>表示匹配字符"{1}",匹配字符“{number}”情况下需要转义

    ?  :  

      1) 表示匹配一个或零个,eg:https?=>https Or http

      2) 表示非贪婪模式:尽可能少的匹配

     :  多字符数据里的多选一

      http abc ftp abc svn abc

      http|ftp|svn abc=>http,ftp,svn abc

      (http|ftp|svn)=>http abc,ftp abc,svn abc

    ( )  :  数据分界[多字符数据多选一]和取数据[子模式]

      Tip:使用子模式过程中,常见写法

        1=>在正则表达式本身中引用分组1的内容

        $1=>在替换中调用分组内容

    (?:)  :  非捕获组

      (?:http|ftp|svn)://([^/]+)=>(?:左括号排除计数 

    模式修饰符

     i   :  不区分大小写

     s   :  作用主要是使.能够匹配换行

    测试字符串:abcABC

    /((?i)[A-Z]+)c/=>res:abc

    /([A-Z]+)c/i=>res:abcABC

    PCRE函数

    preg_replace($pattern,$replacement,$subject):

    @param $pattern:搜索模式,字符串或字符串数组

    @param $replacement:用于替换的字符串或字符串数组

    @param $subject:字符串或字符串数组

    @return 字符串或字符串数组(取决于$subject)

    preg_match_all($pattern,$subject[,$matches]):

    执行一个全局正则表达式匹配(在找到第一个匹配后,子序列继续从最后一次匹配位置搜索)

    @param $pattern : 字符串形式的正则表达式

    @param $subject : 待搜索的输入字符串

    @param $matches : 作为输出参数输出所有的匹配结果

    参考博文:https://www.cnblogs.com/Zjmainstay/p/deep-regexp.html[博主:Zjmainstay]

    参考书籍:正则表达式必知必会[美Ben Forta著]

  • 相关阅读:
    Delphi线程的终止
    Delphi线程简介---Create及其参数、Resume、Suspend
    谈谈Delphi中的类和对象4---类是一种对数据和操作高度的封装机制 && 类是一种代码重用机制
    LeetCode:链表排序
    LeetCode 二叉树的最小深度
    hadoop的集群安装
    java线程池分析和应用
    Java thread中对异常的处理策略
    Thread interrupt方法解析
    如何偷Android的内存-Tricking Android MemoryFile
  • 原文地址:https://www.cnblogs.com/skye-blog/p/7896517.html
Copyright © 2020-2023  润新知