PHP中的正则表达式函数介绍

正则表达式(Regular Expression)

正则表达式系统:
  1.POSIX
  2.Perl

PHP中使用的regex是PCRE:
  NOTE:PCRE(Perl兼容正则表达式,Perl Compatible Regular Expressions)

PCRE语法:
  1.定界符
    必须成对出现,可以使用除0-9a-zA-Z\以外的任何字符
  2.原子
    1.正则需要匹配的可见和不可见字符都是原子
    2.一个正则表达式最少含有一个原子
    3.当需要匹配诸如"("、"["、"^"等含有语义的符号时需要用"\"反斜线进行转义

    原子字符:
      \f 匹配换页符
      \n 匹配换行符
      \r 匹配回车符
      \t 匹配制表符
      \v 匹配垂直制表符

  3.元字符
    \ 转义字符
    ^ 匹配字符串起始处
    $ 匹配字符串末尾
    . 匹配除"\n"之外的任何单个字符

    * 匹配前面的子表达式0或多次
    + 匹配前面的子表达式1次或多次
    ? 匹配前面的子表达式0次或1次

    {n} 匹配n次
    {n,} 匹配n次或n次以上
    {n,m} 最少匹配n次至多匹配m次,(n<=m)

    [] 中括号代表原子表,中间的原子地位都是相等。在匹配的时候,匹配表中的任意一个字符
    [^] 抑扬符,排除后面的原子表所包含的字符。

    (pattern) 匹配pattern并获取这一匹配。
    \num 对获取的第num个匹配的引用。

    (?:pattern) 匹配pattern但不获取这一匹配

    (?=pattern) 正向肯定预查,非获取匹配,例如:windows(?=XP|7)能匹配windowsXP中的windows不能匹配windows98中的windows
    (?!=pattern) 正向否定欲查非获取匹配,例如:windows(?!98|2000),能匹配windowsXP中的windows,不能匹配windows98中的windows
    (?<=pattern) 反向肯定预查,非获取匹配。例如:(?<=My|Postgre)SQL能匹配MySQL中的SQL,不能匹配MSSQL中的SQL
    (?<!pattern) 反向否定预查,非获取匹配。例如:(?<!My|Postgre)SQL能匹配MSSQL中的SQL,不能匹配MySQL中的SQL

    \b 匹配单词边界
    \B 匹配除单词边界以外的字符
    
    \d 匹配任何一个数字。等价于[0-9]
    \D 匹配任何一个非数字以外的字符。等价于[^0-9]

    \s 匹配任何一个空白字符(包括空格、制表符、换页符等)。等价于[\f\n\r\t\v]
    \S 匹配任何一个非空白字符。等价于[^\f\n\r\t\v]
    
    \w 匹配任何一个数字、字母或下划线。等价于[0-9a-zA-Z]
    \W 匹配任何一个非数字、字母或下划线的字符。等价于[^0-9a-zA-Z]

4.模式修正符
  i 不区分大小写
  m 此模式中如果有回车或换行,^和$将匹配每行的行首和行尾
  s 让.能匹配\n
  x 忽略空白
  U 取消贪婪,相当于(.*?)
  A 与^效果一样
  D 结尾处不忽略回车 ,在结束处有$符的时候,在匹配的字符串后面加上回车,$依然能够匹配它成功。但是加上D之后,结尾的回车,不再匹配

  NOTE:正则表达式是从左向右进行匹配的

  相关函数:
    preg_filter — 执行一个正则表达式搜索和替换
    preg_grep — 返回匹配模式的数组条目
    preg_last_error — 返回最后一个PCRE正则执行产生的错误代码
    preg_match_all — 执行一个全局正则表达式匹配
    preg_match — 执行一个正则表达式匹配
    preg_quote — 转义正则表达式字符
    preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
    preg_replace — 执行一个正则表达式的搜索和替换
    preg_split — 通过一个正则表达式分隔字符串

(0)

相关推荐

  • PHP 正则表达式常用函数使用小结

    在PHP中有两套正则表达式函数库.一套是由PCRE(Perl Compatible Regular Expression)库提供的.PCRE库使用和Perl相同的语法规则实现了正则表达式的模式匹配,其使用以"preg_"为前缀命名的函数.另一套是由POSIX(Portable Operation System interface)扩展库提供的.POSIX扩展的正则表达式由POSIX 1003.2定义,一般使用以"ereg_"为前缀命名的函数. 两套函数库的功能相似,

  • php 正则表达式提取网页超级链接url的函数

    复制代码 代码如下: function match_links($document) { preg_match_all("'<\s*a\s.*?href\s*=\s*([\"\'])?(?(1)(.*?)\\1|([^\s\>]+))[^>]*>?(.*?)</a>'isx",$document,$links); while(list($key,$val) = each($links[2])) { if(!empty($val)) $mat

  • PHP函数preg_match_all正则表达式的基本使用详细解析

    了解正则表达式之前,须要掌握一些常用的正则表达式的基础知识,这些如果能记得最好记得,记不住须要用的时候能查到就行,就多个特殊字符,所以说正则表达式玩的就是特殊,具体大家可以查看更加细致的说明. preg_match_all函数具体说明大家可以查看PHP手册,本文运用 preg_match_all用于测试正则表达的效果. 实例代码: 复制代码 代码如下: $html = '<div id="biuuu">jb51.net</div><div id="

  • PHP 正则表达式常用函数

    1.preg_match() 函数原型:int preg_match (string $pattern, string $content [, array $matches]) preg_match ()函数在$content字符串中搜索与$pattern给出的正则表达式相匹配的内容.如果提供了$matches,则将匹配结果放入其 中.$matches[0]将包含与整个模式匹配的文本,$matches[1]将包含第一个捕获的与括号中的模式单元所匹配的内容,以此类推.该函数只 作一次匹配,最终返回

  • php中通过正则表达式下载内容中的远程图片的函数代码

    这段程序其实是属于"小偷程序"的重要部分. 这一段程序只是下载远程图片的那一段而已,程序写的比较简单,大多部分都做了注释. 复制代码 代码如下: if (preg_match_all("/http://[^ "']+[.jpg|.gif|.jpeg|.png]+/ui",stripcslashes($content),$aliurl)){ $i=0; //多个文件++ while(list($key ,$v) = each($aliurl[0])){ //

  • PHP 正则表达式函数库(两套)

    在PHP中有两套正则表达式函数库,两者功能相似,只是执行效率略有差异: 一套是由PCRE(Perl Compatible Regular Expression)库提供的.使用"preg_"为前缀命名的函数: 一套由POSIX(Portable Operating System Interface of Unix )扩展提供的(PHP默认).使用以"ereg_"为前缀命名的函数: PHP中,正则表达式有三个作用: 匹配,也常常用于从字符串中析取信息. 用新文本代替匹配

  • PHP正则表达式基本函数 修饰符 元字符和需转义字符说明

    我在写小偷中用了大量的正则,所以在接下来的版本中要逐步减少正则的应用 在PHP正则表达式中需要转义的字符如下: $^*()+={}[]|/:<>.?'" 注意:perl风格中表达式要求以/开始和结尾,如:/food/ 表匹配字符 food perl修饰符如下: i 完成不区分大小写的搜索 g 查找所有出现(all occurrences,完成全局搜索) m 将一个字符串视为多行(m就表示多(multiple)).默认情况下,^和$字符匹配字符串中的最开始和最末尾.使用m修饰符将使^和

  • PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)

    前面我们已经学习了正则表达式的基础语法,包括了定界符.原子.元字符和模式修正 符.实际上正则表达式想要起作用的话,就必须借用正则表达式处理函数.本节我们就来介绍一下PHP中基于perl的正则表达式处理函数,主要包含了分割, 匹配,查找,替换等等处理操作,依旧是配合示例讲解,让我们开始吧. 和正则表达式一样,正则表达式处理函数不能够独立使用,而这必须相结合,才能够完成特定的功能.在前面我们也说过,基于perl的正则表达式要快于POXIS正则表达式处理函数,所以我们只介绍以preg开头的基于perl

  • PHP中的正则表达式函数介绍

    正则表达式(Regular Expression) 正则表达式系统: 1.POSIX 2.Perl PHP中使用的regex是PCRE: NOTE:PCRE(Perl兼容正则表达式,Perl Compatible Regular Expressions) PCRE语法: 1.定界符 必须成对出现,可以使用除0-9a-zA-Z\以外的任何字符 2.原子 1.正则需要匹配的可见和不可见字符都是原子 2.一个正则表达式最少含有一个原子 3.当需要匹配诸如"("."[".&

  • PHP SPL标准库中的常用函数介绍

    PHP SPL标准库中提供了一些函数用来处理如自动加载.迭代器处理等. spl_autoload_extensions()添加spl_autoload()可加载的文件扩展名 spl_autoload_register()注册函数到SPL __autoload函数栈中. 复制代码 代码如下: /*test1.php*/ <?php class Test1 { }   /*test2.lib.php*/ <?php class Test2 { }   /*test.php*/ <?php /

  • Python 中的lambda函数介绍

    Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction). 一.lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x): return x**2 print f(4) Python中使用lambda的话,写成这样 g = lambda x : x**2 print g(4) 二.la

  • SQL Server中的逻辑函数介绍

    IIF: 根据布尔表达式计算为 true 还是 false,返回其中一个值. IIF 是一种用于编写 CASE 表达式的快速方法. 它将传递的布尔表达式计算为第一个参数,然后根据计算结果返回其他两个参数之一.也即,如果布尔表达式为 true,则返回 true_value:如果布尔表达式为 false 或未知,则返回 false_value. true_value 和 false_value 可以是任何类型. 语法: IIF ( boolean_expression, true_value, fa

  • Oracle 中XML处理函数介绍

    1. EXTRACT(XMLType_instance,Xpath_string) 该函数用于返回XML节点路径下的相应内容 示例: 复制代码 代码如下: SELECT extract(value(a),'/root/main') data FROM xmltable a ; 2. EXTRACTVALUE(XMLType_instance,Xpath_string) 该函数用于返回特定XML节点路径的数据 示例: 复制代码 代码如下: SELECT extractvalue(value(a),

  • asp中日期时间函数介绍

    基本函数 date() 获取日期,格式:2004-2-28 time() 获取时间,格式:22:24:59 now() 获取日期和时间 格式: 2005-5-2 22:37:30 使用方法: d=date() 获取年份:year(d) 获取月份:month(d) 获取日子:day(d) 获取星期几:weekday(d) t=time() 获取小时:hour(t) 获取分钟:minute(t) 获取秒数:second(t) =====================================

  • T-SQL中使用正则表达式函数

    首先,我们在VSTS中创建一Database Project,增一个class, 实现下面的一个方法: 复制代码 代码如下: /// <summary> /// Regs the ex match. /// </summary> /// <param name="inputValue">The input value.</param> /// <param name="regexPattern">The r

  • PHP4(windows版本)中的COM函数

    PHP4(windows版本)中的COM函数 这几天一直在写excel转化成mysql,发现一篇文章,搜一下phpx论坛,没有这个帖子,把它转帖如下: PHP4(windows版本)中的COM函数 介绍 内置于PHP4里的COM函数对于我们在win32环境下开发程序是相当有吸引力的,但是至今仍没有多少相关的技术文档.本文将以三个例子分 别处理 MS office 2000 Word . Excel . Adobe Distiller 来说明如何在PHP中使用COM函数. COM技术是由Micro

  • Perl中的正则表达式介绍

    感谢AKA及作者. Perl 中的正则表达式正则表达式的三种形式 正则表达式中的常用模式 正则表达式的 8 大原则 正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在 CGI 程序设计中就更能得心应手了.下面我们列出一些正则表达式书写时的一些基本语法规则. 9.1 正则表达式的三种形式首先我们应该知道 Perl 程序中,正则表达式有三种存在形式,他们分别是: 匹配:m/<regexp>;

  • PHP中一些可以替代正则表达式函数的字符串操作函数

    0x01:根据预定义的字符对字符串进行词法分析 复制代码 代码如下: <?php /*  * 在处理大量信息时,正则表达式函数会使速度大幅减慢.应当在需要使用正则表达式解析比较复杂的字符串时才能使用这些函数.如果要解析简单的表达式,还可以采用很多可以显著加快处理过程的预定义函数.  */ /*  * 根据预定义的字符对字符串进行词法分析  * strtok()函数根据预定义的字符列表来解析字符串.其形式为:  * string strtok(string str,string tokens)  

随机推荐