正则表达式中原子的5种类型

原子是正则表达式的最基本的组成单位,而且在每个模式中最少包含一个原子。原子是由所有那些未显示指定为元字符的打印和非打印字符组成,所以在这里将其详细划分为五类进行介绍。

  ①普通字符作为原子

  普通字符是编写正则表达式时最常见的原子了,包括所有的大写和小写字母字符、所有数字等。例如,a——z、A——Z、0——9。

  ’/5/’        –用于匹配字符串中是否有5这个字符出现

  ’/php/’      –用于匹配字符串中是否有PHP字符串出现

  ②一些特殊字符和元字符作为原子

  任何一个符号都可以作为原子使用,但如果这个符号在正则表达式中有一些特殊意义,我们就必须使用转义字符“\”取消它的特殊意义,将其变成一个普通的原子。例如,所有标点符号以及一些其他符号,双引号“””、单引号“’”、“*”、“+”、“.”等,如果当原子就必须像\”、\’、\+和\.这样使用。

  ‘/\./’           –用于匹配字符串中是否有英文的“.”出现

  ’/\<br\/\>/’     –用于匹配字符串中是否有HTML的<br/>标记字符串出现

  ③一些非打印字符作为原子

  所谓的非打印字符,是一些在字符串中的格式控制符号,例如空格、回车及制表符号等。例如下表所示列出了正则表达式中常用的非打印字符及其含义。

  ④使用“通用字符类型”作为原子

  前面介绍的不管是打印字符还是非打印字符作为原子,都是一个原子只能匹配一个字符。而有时我们需要一个原子可以匹配一类字符,例如,匹配所有数字不是一个数字,匹配所有字母而不是一个字母,这时就要使用“通用字符类型”了。例如下表所示列出了正则表达式中常用“通用字符类型”及其含义。

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

  虽然前面介绍过“类原子”,可以代表一组原子中的一个,但系统只给我们提供了上表中介绍的6个“类原子”。因为代表某一类的原子太多了,系统不能全都给提供出来,例如数字中的奇数(1、3、5、7、9、)、字母中的元音字母(a、e、i、o、u)等。所以就需要我们可以自己定义出特定的“类原子”,使用原子表“[]”就可以定义一组彼此地位平等的原子,且从原子表中仅选择一个原子进行匹配。如下所示:

>> 本文固定链接: http://php.ncong.com/php_course/php_zend/regex-yuanzi.html

>> 转载请注明: 恩聪php 2014年07月31日 于 恩聪PHP学习教程 发表

正则表达式中原子的5种类型,布布扣,bubuko.com

时间: 2024-12-25 14:17:56

正则表达式中原子的5种类型的相关文章

C++ Primer学习笔记(三) C++中函数是一种类型!!!

C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! 重要的事情要说三遍... 接 C++ Primer学习笔记(二) 类的构造函数 与类同名,且无返回类型. 同类的成员函数一样,也可以在类中声明,在类外定义. 格式: 类名(): 成员1(成员1初始化值), 成员2(成员2初始化值) { } 以上,冒号至大括号中间的部分,称为构造函数的初始化列表,用于调用类成员的构造函数来初始化. 没有在初始化列表中显式指定初始化的成员,将会

result中type的几种类型

result中type的几种类型 dispatch:type的默认类型,相当于servlet的forward方式跳转页面,且只能是页面不能是action,页面能拿到值: redirect:页面重定向,客户端跳转,可以是页面也可以是action,地址栏发生变化,页面不能拿到值,由于redirect采取重定向的方式,下一个页面会取不到上一个请求对象里面的值,如果要传值的话,可以采用get的方式传参: redirect-action:客户端跳转到另一个action,action不能通过get拿到值:

swift中变量的几种类型

swift中变量分为 optional,non-optional 以及 implicitly unwrapped optional 这几种类型 var nullableProperty : AnyObject? // optional var nonNullProperty : AnyObject // non-optional var unannotatedProperty : AnyObject! // implicitly unwrapped optional 其中,optional (如

zz存储系统中缓存的三种类型

三种基本类型的缓存:绕写式(write-around),直写式(write-through)和回写式(write-back). 绕写式(write-around)缓存意味着所有数据首先被写入到硬盘区,当它成为合格的后,再基于读操作将它复制(注意不是移动)到闪存区.这意味着数据总是驻留在硬盘层,通常由RAID或镜像功能进行数据保护.其结果是,缓存区的闪存并不需要像上述分层模型中所要求的高可靠性.此外,由于所有数据首先被写入硬盘,闪存的使用寿命应该会延长.只有真正值得闪存“缓存”的数据才会被写到闪存

ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别

ASP.NET的控件包括WEB服务器控件.WEB用户控件.WEB自定义控件.HTML服务器控件和HTML控件.HTML控件.HTML服务器控件和WEB服务器控件之间的区别如下所示.q      HTML控件:这完全是浏览器端的HTML标签控件,例如HTML中常见的单选框表单控件,其HTML代码如以下代码所示.<input type="radio" id="Radio1" value="select1" checked="check

java中线程分两种,守护线程和用户线程。

java中线程分为两种类型:用户线程和守护线程. 通过Thread.setDaemon(false)设置为用户线程: 通过Thread.setDaemon(true)设置为守护线程. 如果不设置次属性,默认为用户线程. 区别:主线程结束后用户线程会继续运行,JVM存活:主线程结束后,如果没有用户线程,都是守护线程,则JVM结束. public class Mytest extends Thread { public void run() { for(int i=0;;i++){ try { Th

正则表达式三种类型的量词

在正则表达式中,有三种不同类型额量词,分别是 贪婪的,惰性的和支配性的.这三种不同的量词处理字符串的策略,有所不同.适当的利用不同的策略,可以取得四两拨千斤的效果.在实际运用过程中,一定要分清楚他们之间的区别和联系. 贪婪量词先看整个字符串是否匹配.如果没有发现匹配,它去掉该字符串的最后一个字符,并再次尝试.如果还是没有发现匹配,那么再次去掉最后后一个字符,这个过程会一直重复直到发现一个匹配或者字符串不剩任何字符. 值得注意的是,这是正则表达式的默认行为. 惰性量词先看字符串中的第一个字母是否匹

C#中方法的参数的四种类型

C#中方法的参数有四种类型: 1. 值参数类型  (不加任何修饰符,是默认的类型) 2. 引用型参数  (以ref 修饰符声明) 3. 输出型参数  (以out 修饰符声明) 4. 数组型参数  (以params 修饰符声明) =================================================== 1. 值传递: 值类型是方法默认的参数类型,采用的是值拷贝的方式.也就是说,如果使用的是值类型,则可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值.使用

C++ 中的三种类型

C++中一共三种类型 1.C++内置类型,2.1节中讲到的int.double.bool等就是基本的内置类型(低级数据类型): 2.C++还定义了一个内容丰富的抽象数据类型标准库,其中重要的如string.vector,数组和指针等(更高级的抽象数据类型): 3.第三种就是自定义的类类型,前面说过C++ 设计的焦点就是使所定义的类类型的行为可以像内置类型一样自然.