正则表达式(Regular Expression),在Perl里边通常也叫做模式(Pattern),用来表示匹配(或不匹配)某个字符串的特征模板。

使用简单模式:若模式匹配的对象是$_的内容,只要把模式写在一对斜线(/)中就可以了。

$_ = "yabba dabba doo";      if(/ab\tba/)   {print "......";}  ##所有在双引号内的特殊字符,都可以在//内使用。

Unicode中的字符的属性,放在\p{PROPERTY}。只要把小写的p改成大写,就表示否定意义。

if(/\p{Space}/)   {}             ##匹配空白符

if(/\p{Digit}/)   {}               ##匹配数字

if(/\p{Hex}\p{Hex}/)    {}   ##匹配十六进制数字的字符集合[0-9A-Fa-f]

元字符:点号(.)匹配任意一个字符的通配符。如果需要仅仅匹配元字符,可以加反斜线\转义。

简单的量词:星号(*)用来匹配前面条目零次或多次。(.*)匹配任意多字符无限次。

加号(+)匹配前一条目一次以上。问号(?)匹配前一条目一次或没有。

大括号{},表示具体的重复次数。   ##/a{5,15}/重复5次到15 次。

##/a{5,}/最少重复一次。

模式分组:可以用圆括号()来对字符串分组。

/fred+/与/(fred)+/            ##匹配不同量

捕获组:可以通过反向引用来引用圆括号中的模式所匹配的文字。

if(/y(.)(.)\2\1/)   {print "";}        ##\1,\2分别对应顺序的捕获组,按左括号的顺序来标号。匹配进行时的引用

if(/(.)\g{1}11/)   {print "";}        ##g{1}来显式的指明第一个括号,避免歧义。

if(/(.)(.)\g{-1}11/)   {print "";}      ##g{-1}相对反向引用,指前一个捕获组中的数据,这样在增加捕获组时,

保证序号不需要改变

择一匹配:竖线(|),要么匹配左边的内容,要么匹配右边的内容。需要加入括号来限制范围。

/fred( |\t)+barney/          ##匹配至少一个空格或制表符或两个。

字符集:指出一组可能出现的字符,写在方括号[]内表示。只匹配单个字符。在一个字符集的首部加入脱字符(^),表示否定含义。

if(/HAL-[0-9]+/)             ##匹配数字0-9

[^n\-z]                 ##除n,连字符,z之外的任何字符。连接字符(-)在[]中含有特殊含义,所以必须加反斜线\转义

字符集的简写:  /HAL-\d+/     ##\d表示任何一个数字字符集的简写,包括ASCII和Unicode。

if(/HAL-[\d]+/a)      ##//a表示严格按照ASCII的范围来匹配数字字符。

if(/\s/a)          ##\s匹配任意的空白符,/\s/a表示匹配ASCII的空白符。

if(/\R/)           ##\R匹配任意的断行符。

if(/\w/)           ##\w匹配[a-zA-Z0-9_],主要是匹配Perl所承认的标示符,所以会有下划线_。

相应的反义简写:[^\d], [^\w], [^\s]等价于\D, \W, \S。

if([\d\D])        ##匹配任意的字符,包括换行符,比元字符(.)范围还要广。

Perl中的正则表达式(五)的更多相关文章

  1. Perl中的正则表达式

    转自:http://c20031776.blog.163.com/blog/static/684716252013624383887/ Perl 程序中,正则表达式有三种存在形式 分别是 (1 模式匹 ...

  2. Perl中的正则表达

    前几天用到了Perl语言,主要看了一下Perl中的正则表达式,在各种网页语言中,正则表达式在处理字符串的时候十分有用,所以这里就简单说一下在Perl中正则表达式的应用. 先上代码 #!/usr/bin ...

  3. perl学习之正则表达式

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

  4. 在vi vim中使用正则表达式与 普通perl正则的区别?

    参考这篇文章很好 vim中的正则表达式常用的命令有种, 即搜索和替换 /: 搜索 :s 替换 在vim中的正则表达式和perl编程的正则表达式还是有区别的: 正则表达式中的内容包括: 字面字符... ...

  5. JavaScript中的正则表达式(终结篇)

    JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScri ...

  6. VIM中的正则表达式及替换命令

    VIM中的正则表达式及替换命令 一.使用正则表达式的命令 使用正则表达式的命令最常见的就是 / (搜索)命令.其格式如下: /正则表达式 另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正 ...

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

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

  8. Python::re 模块 -- 在Python中使用正则表达式

    前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...

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

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

随机推荐

  1. 在UI自动化测试中使用flaky插件运行失败用例

    在UI自动化测试中,有时候经常会提示跑用例失败,在单步或单个用例调试时,用例却成功,这个失败的因素主要有环境.代码或前端定位等原因. 可以看这篇文章<我们是如何让UI测试变得稳定的>中有详 ...

  2. python selenium中等待元素出现及等待元素消失操作

    在自动化测试中,很多时候都会有等待页面某个元素出现后能进行下一步操作,或者列表中显示加载,直到加载完成后才进行下一步操作,但时间都不确定,如下图所示 幸运的是,在selenium 2后有一个模块exp ...

  3. Unity3D NGUI 二 NGUI Button怎样接受用户点击并调用函数,具体方法名称是什么

    a.直接监听事件 把下面脚本直接绑定在按钮上,当按钮点击时就可以监听到,这种方法不太好很不灵活. void OnClick(){ Debug.Log("Button is Click!!!& ...

  4. 7.24python协程(2)和IO模型

    2018-7-24 08:50:29 异步IO模型 epoll  机制  linux 给每个监听对象绑定回调函数,当要读的对象来了时候,回调函数直接被执行,然后通知用户,效率非常高! python无法 ...

  5. [分布式系统学习]阅读笔记 Distributed systems for fun and profit 之四 Replication 拷贝

    阅读http://book.mixu.net/distsys/replication.html的笔记,是本系列的第四章 拷贝其实是一组通信问题,为一些子问题,例如选举,失灵检测,一致性和原子广播提供了 ...

  6. OpenCV Cut Image via ROI 根据兴趣区域剪裁图片

    我们在使用OpenCV时,有时候需要对现有图片剪裁,比如只需要一个小窗口中的内容,那么我们可以通过OpenCV的兴趣区域 Region of Interest (ROI) 来很轻易的实现,操作也很简单 ...

  7. MapReduce的洗牌(Shuffle)

    Shuffle过程:数据从map端传输到reduce端的过程~ Map端 每个map有一个环形内存缓冲区,用于存储任务的输出.默认大小100MB(io.sort.mb属性),一旦达到阀值0.8(io. ...

  8. PAT-GPLT L2-027 - 名人堂与代金券 - [简单模拟]

    题目链接:https://www.patest.cn/contests/gplt/L2-027 对于在中国大学MOOC(http://www.icourse163.org/)学习“数据结构”课程的学生 ...

  9. IDEA2016.3搭建Struts2+Hibernate+Spring项目环境

    IDEA搭建SSH环境 1.环境 软件版本:IntelliJ IDEA 2016.3.2 系统:windows 7 32位 / ubuntu 框架:Hibernate3,Spring3.2, Stru ...

  10. Win_Server_2008 安装 Oracle_11g EM时上载EM资料失败

    此问题本人也遇到过.在网上找到了解决方案.下部分引用IT PUB. 安装oracle11g 64位.创建数据库到快结束的时候,报告说EM无法创建.emca_2010_06_13_11_05_36.lo ...