1、正则表达式作为一个匹配的模版,是由原子(普通字符,例如a-z),有特殊功能的字符(元字符,例如*、+ 和?等),以及模式修正符三个部分组成。
2、在于Perl兼容的正则表达式函数中使用模式时一定要给模式加上定界符,即将模式包含再两个反斜线  /  之间 。

一、定界符
再使用Perl兼容的正则表达式时,要将模式表达式放进定界符之间。作为定界符不仅仅局限使用"/",除了数字、字符、和反斜线\意外的任何字符都可以作为定界符号。不过通常都习惯讲模式表达式包含在两个斜线/之间。

二、原子
原子是正则表达式的最几本组成单位,再每个模式中最少要包含一个原子。
1、普通字符作为原子
   a~z    、A~Z 、0 ~ 9等

2、一些特殊字符和元字符作为原子
任何一个符号都可以当做原子使用,但是如果这个符号再正则表达式中表示一些特殊涵义。则必须使用转义字符取消特殊涵义,将其变成普通原子。

3、一些非打印字符作为原子

所谓的非打印字符,就是一些在字符串中的格式控制符号。例如空格、回车、以及制表符。
   

4、使用“通用字符类型"作为原子
  不管是打印字符还是非打印字符作为原子都是一个原子只能匹配一个字符。而有事我们需要一个原子可以匹配一类字符。如匹配数字、匹配字母。

5、自定义原子表([])作为原子

使用自定义出特定的“类原子”,使用原子可以定义意足彼此平级的原子。
如“/[jhp]sp/” 可以匹配jsp 、hsp 、psp三种

三、元字符
 利用Perl正则表达式还可以使用各种元字符来搜索匹配。所谓元字符,就是用于构建正则表达式的具有特殊涵义的字符。如 . * ? + 等。在一个正则表达中,元字符不能单独出现,它是用来修饰原子的。如同我们中文的形容词一样,必须有形容的主体才醒。例如:我很帅。帅是形容词,形容的是我。元字符可以做这方面的理解和想象。
    构建正则表达式的方法和写文章的方法一样,就是使用多种形容词将某个人物或者事情清晰直观的表达出来。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者是所有这些组件的任意组合。下面将这些字符分为几个小类,分别阐述。

  
  1、限定符。限定次数。
  2、边界限制
  3、原点,在字符之外,模式中的原点可以匹配目标中的任意一个字符,包括不可打印字符,但不匹配换行符。如果设定了模式修正符s,则也会匹配换行符。
  4、模式选择符(|)匹配选项中的任意一组。
  5、模式单元。使用元字符()将多个原子组成大的原子,被当做一个单元独立使用。
  6、后向引用。
  7、模式匹配的优先级:从左到右。
 
四、模式修正符。
  

PHP -- Perl风格正则表达式的更多相关文章

  1. perl的正则表达式

    “小骆驼”的“正则表达式“部分学习总结: 一.匹配语法: 1.".":任意单字符(‘\n‘除外): 2.“*“:匹配前项0-n次: 3.“+“:匹配前项1-n次: 4.“?”:匹配 ...

  2. smix到底是个啥?Perl的正则表达式匹配模式

    最近在研究一个perl项目,临时学习了一下perl语法,强行看项目源码.因为总是见到各种正则表达式后面接smxi之类,虽然知道是匹配模式,但脑子里毫无概念.所以特地去学习了一下. 以上为背景. Per ...

  3. Perl入门(四)Perl的正则表达式

    正则表达式是Perl语言的特色,基本的语法不是很难,但是编写一个符合需求.高效的正则表达式,还是有一些挑战的. Perl的三种匹配模式 1.查找 语法:m/正则表达式内容/; 作用:查找匹配内容中是否 ...

  4. perl 之 正则表达式 (简)

    正则表达式,简单介绍: 元字符 匹配项 字符类:单字符与数字   . 匹配除换行符之外的任意字符 [a-z0-9] 匹配集中任意单字符 [^a-z0-9] 匹配不在集合中的任意单字符 \d 匹配单个数 ...

  5. 传统IO与NIO的比较

    本文并非Java.io或Java.nio的使用手册,也不是如何使用Java.io与Java.nio的技术文档.这里只是尝试比较这两个包,用最简单的方式突出它们的区别和各自的特性.Java.nio提出了 ...

  6. java 的nio与io对比

    转:本文并非Java.io或Java.nio的使用手册,也不是如何使用Java.io与Java.nio的技术文档.这里只是尝试比较这两个包,用最简单的方式突出它们的区别和各自的特性.Java.nio提 ...

  7. 解析posix与perl标准的正则表达式区别 ---PHP

        正则表达式(Regular Expression,缩写为regexp,regex或regxp),又称正规表达式.正规表示式或常规表达式或正规化表示法或正规表示法,是指一个用 来描述或者匹配一系 ...

  8. perl正则表达式第一周笔记

    正则表达式基础 ^ 行首标志 $ 行末标志 如^cat即一整行只有cat这个单词,^则是一个空行 [  ] 字符组,用来匹配若干字符之一 如gr[ae]y,即grey或者gray - 在字符组内部,字 ...

  9. perl学习笔记之:正则表达式

     Perl 中的正则表达式 正则表达式的三种形式  正则表达式中的常用模式  正则表达式的 8 大原则          正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过 ...

随机推荐

  1. #研发中间件介绍#定时任务调度与管理JobCenter

    郑昀 最后更新于2014/11/11 关键词:定时任务.调度.监控报警.Job.crontab.Java 本文档适用人员:研发员工   没有JobCenter时我们要面对的:   电商业务链条很长,业 ...

  2. PacificA中的租约与失效检测解读

    PacificA是微软的在基于log的分布式存储系统中的复制技术. 由于配置管理器维护着当前配置的真实情况,因此主节点不必保持不变. 这是因为配置的本地视图在不同服务器上是不必同步的. 特别是,我们必 ...

  3. ORA-19502: write error on file "xxxxx", block number xxxx

    错误现象: 在ORACLE 10g下为表空间IGNITE_EGVSQL01增加数据文件时,报如下错误: SQL> ALTER TABLESPACE IGNITE_EGVSQL01      AD ...

  4. (转载)SQL Reporting Services (Expression Examples)

    https://msdn.microsoft.com/en-us/library/ms157328(v=SQL.100).aspx Expressions are used frequently in ...

  5. goldengate abended with no data found

    先来看下报错ggserr.log: 2016-12-22 04:48:52  WARNING OGG-02544  Unhandled error (ORA-26787: The row with k ...

  6. 0027 Java学习笔记-面向对象-(非静态、静态、局部、匿名)内部类

    内部类 内部类就是把一个类写在另一个类的内部 用途: 如果一个类只希望它被某一个类访问,那么可以把它定义在另一个类的内部,并用private修饰 内部类可以访问它所在外部类的private成员:但所在 ...

  7. 配置TortoiseSVN客户端, 强制签入前加注释

    正如上篇提到, 总有一些人在签入代码到SVN前没有加注释, 然后, 像这样: 鬼才知道改了什么东西. ①有些人可能就是没有写注释的习惯, ②有些人可能是忘记写注释 && SVN服务端和 ...

  8. [WPF系列]-使用Binding来同步不同控件的Dependency property

    简介 项目中经常会用到,同步两个控件的值,本文就简单列举两种方式来同步不同控件的两个Dependency Property. 示例 效果图: 只使用C#代码: //获取slider1的ValueDep ...

  9. leetcode: longest substring without repeating characters

    July 16, 2015 Problem statement: Longest Substring Without Repeating Characters Read the blog: http: ...

  10. HTTPS----安全超文本传输协议

    HTTPS协议详解HTTPS以保密为目标研发,简单讲是HTTP的安全版.其安全基础是SSL协议,因此加密的详细内容请看SSL.全称Hypertext Transfer Protocol over Se ...