使用简单模式匹配

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

  1. #$_="yabba dabba doo";
  2. #if (/abba/){
  3. #print "it matched!\n";
  4. #}

unicode属性

若要匹配某项属性,只需要把属性名放入\p{PROPERTY}里面。比如有许多字符属于空白符,相应的属性名为Space,要匹配这类的字符可以

  1. if(/\p{Space}/) {
  2. print "The string has some whitespace.\n";
  3. }

若要匹配数字,可以用Digit属性

  1. if(/\p{Digit}/){
  2. print "The string has a digit.\n";
  3. }

把小写的p改成大写P,就表示否定意义,匹配指定属性意外的字符。

元字符

点号(.)是能匹配任意一个字符的通配符,换行符不能匹配。如果希望点号仅匹配他本身,则在他前面加上反斜线。即任何元字符前面加上反斜线,就会使它失去元字符的特殊作用。反斜线是我们的第二个元字符,要匹配真正的反斜线,请用两个反斜线表示。

  1. $_='a real \\ backslash';
  2. if(/\\/){
  3. print "It matched!\n";
  4. }

简单的量词

星号(*)用来匹配前面的条目出现零次或多次的情况。点号星号(.*)组合起来可以匹配任意字符零到无限次。加号(+)会匹配前一个条目一次以上,以及匹配空格。问号(?)匹配前一个条目出现一次或者不出线。

模式分组

在正则表达式中,()的作用是对字符串分组,()也是元字符。/fred+/匹配的是freddddd,/(fred)+/匹配的是fredfredfredfred,/(fred)*/匹配的是任意字符。

  1. $_="abba";
  2. if (/(.)\1/)
  3. #if(/(.)(.)/)
  4. {
  5. print "It matched some character next to itself!\n";
  6. }

反向引用不必紧接在对应的捕获组括号后面。下面的模式会匹配y后面的4个连续的非换行符,并用\1反向引用表示匹配d后也出现这4个字符的情况。

  1. $_="abba dabba doo";
  2. if(/y(....) d\1/)
  3. #if(/y(....) d(....)/)
  4. {
  5. print "It matched the same after y and d!\n";
  6. }

也可以用多个括号来分成多组,每个组都可以有自己的反向引用。

  1. $_="yabba dabba doo";
  2. if (/y(.)(.)\2\1/)
  3. #if(/y(.)(.)(..)(.)/)
  4. {
  5. print "It matched after the y!\n";
  6. }

下面这种情况perl匹配的是\1,\11还是\111呢?

  1. use 5.010;
  2. $_="aa11bb";
  3. if(/(.)\111/)
  4. {
  5. print "It matched!\n";
  6. }

perl会认为是\111,那么如何避免呢?

  1. use 5.010;
  2. $_="aa11bb";
  3. if (/(.)\g{1}11)/{
  4. print "It maatched!\n";
  5. }

转载于:https://blog.51cto.com/frozenfall/1058638

perl:正则表达式部分相关推荐

  1. perl正则表达式-1

    .代表任何一个单字符,不匹配换行符. *是量词,表示前面内容出现0到多次. +也是量词,表示前面内容出现1到多次. 字符集简写     \d表示一个数字     \w表示一个单词字符()数字,字母,下 ...

  2. perl 正则表达式 引擎_Perl 5引擎概述

    perl 正则表达式 引擎 正如我在" 我的DeLorean运行Perl "中所述,切换到Perl极大地提高了我的开发速度和可能性. 在这里,我将更深入地研究Perl 5的设计,以 ...

  3. perl正则表达式匹配中文

    perl正则表达式匹配中文:/[^u4E00-u9FA5]/ js中正则表达式匹配中文:match(/[\u4E00-\u9FA5]/)

  4. Perl正则表达式讲解

    转载:http://blog.sina.com.cn/s/blog_607254630101cvx3.html 9.3.1 原则1 正则表达式有三种形式:匹配.替换和转换. 在表 9-1 中列有三种正 ...

  5. Perl 正则表达式

    Perl 正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. Pe ...

  6. Perl——正则表达式

    Perl正则表达式 文章目录 Perl正则表达式 一.正则表达式的应用 二.正则表达式之元字符 2.1 转义 2.2 特殊匹配 2.3 匹配次数 2.4 各种括号 ( ),[ ],{ } 三.正则表达 ...

  7. Perl正则表达式(2) - 用正则表达式进行匹配

    Perl正则表达式 2. 用正则表达式进行匹配 2.1 用 m// 进行匹配 到目前为止,我们都是讲正则表达式的内容写在一对斜线内,如/fred/.但其实这是 m// 的简写,其中m代表match,和 ...

  8. Perl正则表达式(1) - 正则表达式基础知识

    Perl正则表达式 1. 基础知识 Perl中正则表达式(regular expression)默认匹配 $_ 中的字符串,匹配成功就返回真,否则返回假: Perl匹配正则表达式时,可以使用变量内插, ...

  9. 在 UltraEdit 和 UEStudio 中开始使用 Perl 正则表达式

    作为 UltraEdit/UEStudio 查找/替换功能中最强大的组件之一,Perl 正则表达式使您能够在一次替换中重新格式化大量非均匀数据,从而为您节省几分钟甚至几小时的手动文本编辑时间! 要搜索 ...

  10. 浅谈Perl正则表达式

    一.简介 Perl正则表达式中模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即Perl正则表达式中模式def.其用法如结合函数split将字符串用某Perl正则表达式中模式分成多个单词 ...

最新文章

  1. php cgi windows7安装,PHP For Windows64位
  2. Java之Character类
  3. seo模拟点击软件_网站用软件刷排名好不好?
  4. databasemetadata获取表注释_宏基因组测序中短序列的注释
  5. 模拟请求分页式存储管理 ---4种置换算法
  6. php怎样使用pdo,PHP中使用PDO_PHP教程
  7. Python工程师必看的面试问题与解答(中)
  8. 如何使用python装饰器_Python学习之如何使用装饰器 @decorator
  9. MyEclipse2014 优化设置
  10. jsp中用java写标签id_jsp中自定义标签用法实例分析
  11. python3.5安装教程及环境配置_Windows7环境下Python2.7与Python3.5共存安装
  12. Mysql基础系列(一)
  13. 文件对应的Content-Type类型
  14. 电量分析 —— 优化耗电
  15. zktime 协议_zktime5.0考勤管理系统使用说明书(1.0版).pdf
  16. word复制某些公式无响应处理方法
  17. OpenCV图像轮廓提取
  18. 秃如其来第一步之安装JDK
  19. 2020华为软件精英挑战赛历程总结——复赛篇
  20. java jcmd,JVM工具_jcmd

热门文章

  1. Micropython开发实例之TPYBoard v702GPRS功能测试
  2. 【干货】史上最全的Tensorflow学习资源汇总,速藏!
  3. iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)
  4. MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
  5. WAV文件C++分析与显示
  6. 企业级工作流解决方案(十五)--集成Abp和ng-alain--Abp其他改造
  7. Java虚拟机常见面试题
  8. HDU 4466 Triangle(计数)
  9. [原创]SSH密钥访问Git仓库配置
  10. NYOJ 353 3D dungeon 【bfs】