<转>PHP中正则表达式函数

摘要:
PHP中的正则表达式函数PHP中有两组正则表达式函数库。POSIX扩展的正则表达式由POSIX1003.2定义。它通常用作“ereg_”一个以前缀命名的函数。比赛。2.ereg()和eregi()ereg(是POSIX扩展库中正则表达式的匹配函数。两者和preg_match函数相似,但该函数返回一个布尔值,指示匹配是否成功。2.多行匹配仅使用POSIX下的常规表格函数,难以执行复杂的匹配操作。

PHP中的正则表达式函数

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

两套函数库的功能相似,执行效率稍有不同。一般而言,实现相同的功能,使用PCRE库的效率略占优势。下面详细介绍其使用方法。

正则表达式的匹配

  1.preg_match()

    函数原型:int preg_match (string pattern,stringpattern,stringcontent [, array $matches])

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

   2.ereg()和eregi()

    ereg()是POSIX扩展库中正则表达式的匹配函数。eregi()是ereg()函数的忽略大小写的版 本。二者与preg_match的功能类似,但函数返回的是一个布尔值,表明匹配成功与否。需要说明的是,POSIX扩展库函数的第一个参数接受的是正则 表达式字符串,即不需要使用分界符。

 

     3.preg_grep()

  函数原型:array preg_grep (string pattern,arraypattern,arrayinput)

  preg_grep()函数返回一个数组,其中包括了inputinput数组中与给定的pattern模式相匹配的单元。对于输入数组$input中的每个元素,preg_grep()也只进行一次匹配。代码6.3给出的示例简单地说明了preg_grep()函数的使用。

 

进行全局正则表达式匹配

  1.preg_match_all()

  与preg_match()函数类似。如果使用了第三个参数,将把所有可能的匹配结果放入。本函数返回整个模 式匹配的次数(可能为0),如果出错返回False。   

  2.多行匹配

  仅仅使用POSIX下的正则表式函数,很难进行复杂的匹配操作。例如,对整个文件(尤其是多行文本)进行匹配查找。使用ereg()对此进行操作的一个方法是分行处理。

正则表达式的替换

   1.ereg_replace()和eregi_replace()  

  函数原型:string ereg_replace (string pattern,stringpattern,stringreplacement, string $string)

                  string eregi_replace (string pattern,stringpattern,stringreplacement, string $string)

  ereg_replace()在stringstring中搜索模式字符串pattern,并将所匹配结果替换 为replacementreplacement。当pattern中包含模式单元(或子模式)时,replacement1replacement中形如“1”或“1”的位置将依次被这些子 模式所匹配的内容替换。而“

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle系统包——dbms_random用法安装 mysqlclient下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

浅谈springboot 中如何通过restTemplate发送带有header和token的网络请求

最近在进行第三方接口对接,在对接过程中要用到大量的restTemplate的使用,个人觉得restTemplate装载带token的header发送网络请求是很重要的一个知识点,我在这里简单记录下: 第一步,注入TestRestTemplate: @Autowired private TestRestTemplate testRestTempl...

MySQL分段统计SQL写法 与 Mybatis 异常 java.math.BigDecimal cannot be cast to java.lang.Integer

mysql> select -> sum(case when score<60 then 1 else 0 end) as '<60', -> sum(case when score>=60 and score<=69 then 1 else 0 end) as '60~69', -&...

php持续集成环境笔记

记录下php集成环境中若干个工具的安装步骤和过程: 安装pear wget http://pear.php.net/go-pear.phar $ php go-pear.phar 使用:pear install <要安装的pear程序包> 安装phpunit pear channel-discover pear.phpunit.de p...

批处理脚本

常用dos命令 批处理复制文件(文件夹) 1.复制C:ae.txt 文本文件到d:文件夹下面【复制完的目录结构应该为d:e.txt】xcopy /y c:ae.txt d: >nul2.复制C:a文件夹及其内所有东西(包括隐藏,系统文件)到D:文件夹下面【 a文件夹也要复制过去,也就是说,复制之后,a文件夹应该在b文件夹下】xcopy /y /e...

Prism完成的一个WPF项目

Prism+MaterialDesign+EntityFramework Core+Postgresql WPF开发总结 之 终极篇 本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结。 总共分三个部分: 基础篇主要针对C#初学者,巩固C#常用知识点; 中级篇主要针对WPF布局与MaterialDesig...

RedisTemplate访问Redis数据结构(三)——Hash

HashOperations提供一系列方法操作hash。首先初始化spring工厂获得redisTemplate和opsForHash private RedisTemplate<String,Object> redisTemplate; private HashOperations<String,String,Objec...