转自:http://www.baiwar.com/post/the-use-of-php-pcre-regex-delimiter.html

php5.3.0以前,PHP可使用两套正则表达式规则,一是IEEE制定的POSIX,另一套是PCRE的PERL兼容正则表达式规则。
在php5.3.0后,POSIX被弃用。

PCRE正则表达式需要以分隔符闭合:

1. 分隔符可以使用任意的非字母数字,非反斜线,非空的字符,如常用的正斜线(/)、hash符号(#) 以及取反符号(~)。

2. 甚至其首尾可以使用括号(如”()”、”[]”及”{}”)闭合。

3. 但若使用元字符(如+、*、^)作为分隔符,则该正则表达式中不能使用该分隔符(转义的除外)。

实例:

  1. $url="http://baiwar.com/#";
  2. //使用反斜杠'/'作为分隔符
  3. preg_match('/^http:\/\/[a-z]+\.[a-z]{2,6}\/#/',$url,$match);
  4. echo "//使用反斜杠'/'作为分隔符<br>";
  5. echo "preg_match('/^http:\/\/[a-z]+\.[a-z]{2,6}\/#/',$url,$match);的输出结果为:<br>";
  6. echo $match[0]."<hr>";
  7. //使用反斜杠'#'作为分隔符(反斜杠可以不使用转义符,但其中的'#'需要使用转义符)
  8. preg_match('#^http://[a-z]+\.[a-z]{2,6}/\##',$url,$match);
  9. echo "//使用反斜杠'#'作为分隔符(反斜杠可以不使用转义符,但其中的'#'需要使用转义符)<br>";
  10. echo "preg_match('#^http://[a-z]+\.[a-z]{2,6}/\##',$url,$match);的输出结果为:<br>";
  11. echo $match[0]."<hr>";
  12. //使用反斜杠'^'作为分隔符(反斜杠可以不使用转义符),元字符不能使用'^',否则报错
  13. preg_match('^http://[a-z]+\.[a-z]{2,6}/#^',$url,$match);
  14. echo "//使用反斜杠'^'作为分隔符(反斜杠可以不使用转义符),元字符不能使用'^',否则报错<br>";
  15. echo "preg_match('^http://[a-z]+\.[a-z]{2,6}/#^',$url,$match);的输出结果为:<br>";
  16. echo $match[0]."<hr>";
  17. //使用反斜杠'[]'作为分隔符(反斜杠可以不使用转义符)
  18. preg_match('[^http://[a-z]+\.[a-z]{2,6}/#]',$url,$match);
  19. echo "//使用反斜杠'[]'作为分隔符(反斜杠可以不使用转义符)<br>";
  20. echo "preg_match('[^http://[a-z]+\.[a-z]{2,6}/#]',$url,$match);的输出结果为:<br>";
  21. echo $match[0]."<hr>";

输出结果:

  1. //使用反斜杠'/'作为分隔符
  2. preg_match('/^http:\/\/[a-z]+\.[a-z]{2,6}\/#/',http://baiwar.com/#,$match);的输出结果为:
  3. http://baiwar.com/#
  4. //使用反斜杠'#'作为分隔符(反斜杠可以不使用转义符,但其中的'#'需要使用转义符)
  5. preg_match('#^http://[a-z]+\.[a-z]{2,6}/\##',http://baiwar.com/#,$match);的输出结果为:
  6. http://baiwar.com/#
  7. //使用反斜杠'^'作为分隔符(反斜杠可以不使用转义符),元字符不能使用'^',否则报错
  8. preg_match('^http://[a-z]+\.[a-z]{2,6}/#^',http://baiwar.com/#,$match);的输出结果为:
  9. http://baiwar.com/#
  10. //使用反斜杠'[]'作为分隔符(反斜杠可以不使用转义符)
  11. preg_match('[^http://[a-z]+\.[a-z]{2,6}/#]',http://baiwar.com/#,$match);的输出结果为:
  12. http://baiwar.com/#

php中PCRE正则表达式分隔符的使用的更多相关文章

  1. PHP中 PCRE正则表达式模式修饰符“u” 的使用。

    u (PCRE_UTF8) 此修正符打开一个与 perl 不兼容的附加功能. 模式字符串被认为是utf-8的. 这个修饰符 从 unix 版php 4.1.0 或更高,win32版 php 4.2.3 ...

  2. Snort中pcre和正则表达式的使用

    Snort中pcre和正则表达式的使用 1. 题目描述 If snort see two packets in a TCP flow with first packet has "login ...

  3. 玩转PHP中的正则表达式

    玩转PHP中的正则表达式 检验用户输入.解析用户输入和文件内容,以及重新格式化字符串 级别: 中级 正则表达式提供了一种处理文本的强大方法.使用正则表达式,您可以对用户输入进行复杂的检验.解析用户输入 ...

  4. PHP中的正则表达式及模式匹配

    PHP中的正则表达式及模式匹配 PHP中对于正则处理文本提供了两种方式,一种是PCRE方式(PCRE库是一个实现了与perl 5在语法和语义上略有差异(详见下文)的正则表达式模式匹配功能的函数集. 当 ...

  5. MongoDB用PCRE正则表达式

    介绍 下面说明 PCRE 所支持的正则表达式的语法和语义.Perl 文档和很多其它书中也解说了正则表达式,有的书中有很多例子.Jeffrey Friedl 写的“Mastering Regular E ...

  6. PHP中有关正则表达式的函数集锦

    之前学正则表达式的目的是想从网上抓取点小说啊,文档啊,还有获取相应的视频连接然后批量下载.当时初学PHP根本不知道PHP有专门抓包的工具,就像Simple_html_dom.php(在我的其他博文中有 ...

  7. 任督二脉之Shell中的正则表达式

    VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进. Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyz ...

  8. 转载 javascript中的正则表达式总结 一

    定义正则表达式的方法 定义正则表达式的方法有两种:构造函数定义和正则表达式直接量定义.例如: var reg1 = new RegExp('\d{5, 11}'); // 通过构造函数定义 var r ...

  9. PHP中的正则表达式的使用

    PHP中的正则表达式基础知识1.正则表达式就是描述字符串排列模式的一种自定义语法规则2.如果可以使用字符串处理函数完成的任务,就不使用正则表达式3.有一些复杂的操作,只能使用正则表达式完成4.正则表达 ...

随机推荐

  1. hdu 4883 思维题

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4883 TIANKENG’s restaurant Time Limit: 2000/1000 MS (Ja ...

  2. HUD5423 Rikka with Tree(DFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5423 Rikka with Tree Time Limit: 2000/1000 MS (Java/O ...

  3. SVN 的使用

    文件夹上的符号有什么意义?? 黄色感叹号(有冲突):--这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许 ...

  4. E2 2014.6.3 更新日志

    增加功能 增加支持中关村获取商品信息 增加个人业绩查询功能 增加赠送和获赠查询功能 增加商品历程分析报表,资金历程分析报表,科目明细分析报表, 销售分析报表 增加服务维修明细表查询报表 完善功能 固定 ...

  5. 表单美化-原生javascript和jQuery多选按钮(兼容IE6)

    前些天我们讲了下单选按钮的美化今天来做表单元素多选按钮的美化.我们的想法是:利用多选按钮是否被选中和是否不给选择的特性来为按钮的父元素添加对应的样式,就是说用什么的样式是由按钮的状态来决定. 用到的图 ...

  6. iOS - Swift 与 C 语言交互编程

    前言 作为一种可与 Objective-C 相互调用的语言,Swift 也具有一些与 C 语言的类型和特性,如果你的代码有需要,Swift 也提供了和常见的 C 代码结构混合编程的编程方式. 1.基本 ...

  7. iOS开发之 Xcode svn更新代码后,不能打开.xcodeproj,因为该项目文件不能被解析

    http://www.cfanz.cn/?c=article&a=read&id=41565 解决方法:    1.对.xcodeproj 文件右键,显示包内容 2.双击打开 proj ...

  8. EXEL表格读取 按键精灵

    EXEL表格读取(1,m)(2,m)表格信息,m为行数 以下为本帖隐藏内容 ============================== Call Plugin.Office.OpenXls(&quo ...

  9. OneProxy主从延迟检测

    OneProxy具有主从延迟检测功能,检测方式有两种. 1.通过MySQL本身提供的延迟信息,即在从库中执行show slave status; 查看Seconds_Behind_Master值: 2 ...

  10. 【转】 Linux进程间通信

    一.进程间通信概述进程通信有如下一些目的:A.数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B.共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别 ...