模式

  • 锚位
    1.^:标志字符串的开头
    2.$:标志字符串结尾, eg:/ ^ \s* $ / 可以匹配空串
    3./b:单词(\w+)锚位,匹配任何单词的收尾
    4./B:非单词锚位,能匹配所有\b不能匹配的位置
    在perl中的单词的定义是:由数字、字母、下划线组成的单独的词串

  • 绑定操作符 =~
    默认情况下模式匹配的对象是“$ _ ”,绑定操作符=~用于告诉Perl拿右边的模式匹配左边的字符串,而不是匹配“$_”变量中的字符串。

  • 变量内插
    在Perl的正则表达式中可以进行双分界符形式的变量内插。
    e.g. $ val2 =~ /($ val)/ 或者 $ val2 =~ /{$val}/

捕获

Q:如何把匹配后的内容记录下来?
A:使用Perl的捕获功能,将圆括号中模式匹配的字符串暂时记一下来,如果有多对括号就有多个捕获。
每个被捕获的对象是原本的字符串,而不是单纯的模式,捕获变量都是标量变量,它们的名字依次是$1,$2,$3……
捕获变量的生命周期:存活到下次成功的模式匹配为止(匹配失败不会改变)
也可以使用括号但不捕获,需要在左括号的后面加问号和冒号(?:),以告诉Perl括号是完全为分组存在的。

  • 命名捕获
    为了不必记忆数字型捕获变量的含义,引入了正则表达式命名捕获的概念。
    捕获的结果存入**特殊哈希表%+**中,键是使用的特殊标签,值是被捕获的串。
    方法是使用(?< LABEL>PATTERN)这样的写法,此时使用捕获串时,需要访问的位置变成了$+{LABEL}
    使用命名捕获后括号的次序变得更加灵活。
    也可使用\g{LABEL}或\k{LABEL}反向引用。

其它

  • 自动匹配变量
    有三个自动匹配变量:$ &, $ `, $ ’
    $ &:字符串里实际匹配模式的部分会被自动存进$&
    $ ``:储存匹配起始位置之前的部分,也就是保存了找到匹配段落前略过的部分
    $ ’ :存储字符串中剩下的、从来没有匹配到的部分
    因此三个自动匹配变量连起来可以形成完整的原字符串。

替换

  • 替换操作符
    可以使用s///将指定变量合乎模式的部分替换为另一个串,s///前两个斜杠中间的内容替换为后两个斜杠之间的内容。
    返回值是布尔值,成功时为真,否则为假。
    使用/g修饰符可以进行全局替换,s///只进行一次替换,/g可以进行所有可能的、不重复的替换。
    和m//一样,s///也可以用其它的定界符,如s###,s()(),s{}{}等等。
  • 替换修饰符
    /g:全局替换
    /i:不区分大小写
    /x:允许有空字符
    /s:匹配任何字符,包括换行符
    /m:可以让模式也匹配字符串内的换行符(待进一步解释)
    绑定操作符:=~同样适用于替换操作。
  • 转义字符:

代码

例一:锚位


例二:绑定操作符和变量内插


例三:捕获变量

第一个if函数中,三个圆括号(\w+)所对应的值会存储在$1,$2,$3当中。

例四:命名捕获


例五:自动匹配变量

例六:替换



[5]指的是将开头的任意多个空白符和结尾的任意多个空白符变化为“空”。

例七:





[13]中,只对$2做大写转换\U,\E以后$1的大写转换被中止。

Perl教程 第三课 第二节相关推荐

  1. C语言基础第六课——第二节if语句(if-else格式、不带else的if结构)、借例题简述写代码流程、从键盘上输入三个整数,求出其中的最大数(打擂法、三目运算符、排序)、if语句的嵌套计算个人所得税

    C语言基础第六课--第二节 一.if语句概述 二.标准if-else格式 三.借例题简述写代码流程 四.不带else的if结构 五.例题:从键盘上输入三个整数,求出其中的最大数.(打擂法.三目运算符. ...

  2. Lance老师UI系列教程第三课-QQ登录注册界面的实现(android-2012最新版)

    分类: android UI教程2012-08-06 22:37 3731人阅读 评论(6) 收藏 举报 uiandroidqqlayoutbutton UI系列教程第三课:腾讯登录注册界面的实现 今 ...

  3. 火山PC抓取快递物流查询接口教程第三课

    本源码转载自利快云https://www.lkuaiy.com/ 火山PC抓取快递物流查询接口教程第三课 一.本课目标 本节以网页公开快递查询网站(http://www.kuaidi.com)进行教学 ...

  4. 【文献阅读】翻译王军武老师的文献--《稠密气固流的连续理论现状回顾》三、第二节 气固流态化的多尺度模拟

    2. 气固流态化的多尺度模拟 流化床中的气固流动出了名的难以建模.这主要是由于物理定律所在的微尺度与介尺度之间,乃至于与我们希望理解的宏观现象之间的时空鸿沟的存在.这一鸿沟的存在意味着给出多尺度模拟策 ...

  5. 【数据聚类】第三章第二节2:K-Means算法及其Python实现(算法实现、结果展示)

    pdf下载(密码:7281) 本文上接:[数据聚类]第三章第二节1:K-Means算法及其Python实现(距离度量方式.目标函数和算法流程) 本文下接:[数据聚类]第三章第二节3:K-Means算法 ...

  6. 高红梅:第三章 第二节 身份焦虑与英雄梦

    第二节 身份焦虑与英雄梦 海明威一生都在世界各地旅行,其足迹遍及欧洲.非洲.美洲和亚洲,有世界公民的美誉.正如学者卡洛斯·贝克(Baker ,Carlos)所言,"早在他五十五岁荣获诺贝尔文 ...

  7. 易语言miniblink交互教程——第三课 易语言与 Miniblink 交互

    今天来给大家讲解一下易语言&miniblink交互教程的第三课,也就是如何让易语言与Miniblink进行数据交互,相互传递参数. 1.用易语言调用JS 调用JS的方式很简单,只需要一句代码即 ...

  8. 初级会计实务--第三章第二节、应付及预收账款

    第二节.应付及预收账款 1.应付票据 指企业购买材料,商品和接受服务等而开出的承兑的商业汇票,包括商业承兑汇票和银行承兑汇票 商业承兑汇票 正常付款时:(1)购买原材料收到商业汇票借:原材料应交税费- ...

  9. 第三部分第二节课全部

    文章目录 1 2 stochastic local search Simple SLS methods Iterative improvement(II): iterative improvement ...

最新文章

  1. C++中多态的概念和意义
  2. 用python输出回文数
  3. mysql 连接 分组_MySQL 基础 (四) 分组查询及连接查询
  4. linux http用户,HTTP完整请求过程
  5. 【2021Java最新学习路线】java前端开发
  6. 人手一份的Java面试精选题,你值得拥有!
  7. Anaconda的安装和环境使用
  8. js转换php时间戳,js和PHP 时间戳与日期转换
  9. php页面能加音乐吗,网页背景音乐的设置方法,兼容所有浏览器
  10. java计算机毕业设计企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  11. check root android,Root Checker - Check Root
  12. ecshop+ectouch LANP伪静态
  13. 什么是用户价值分层?
  14. Android加载服务器的静态图片文件
  15. 跑步到底伤不伤膝盖?励建安教授给你权威解答
  16. win10系统 没有wifi图标 WiFi列表没有显示
  17. 电脑怎么了--电脑通电电源风扇不转动
  18. HM编码器代码阅读(9)——片编码器的初始化
  19. 【Java面向对象编程——喂养三种宠物】
  20. 虚幻引擎图文笔记:如何让带骨骼的角色捡东西(Pickup)和扔东西(Drop)

热门文章

  1. 单对象编程实现2048小游戏!
  2. Android 相关的arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
  3. 百度发内部邮件:启动干部轮岗制度 涉及三位副总裁
  4. java中的super()是什么?
  5. Ubuntu18.04截屏 系统工具和Flameshot
  6. 软件工程导论考纲知识点
  7. 产品分析丨豆瓣APP
  8. java nio读取远程文件_操作分布式文件之七:如何并行读写远程文件
  9. 《春娇与志明》普清国语中字!国语粤语双音轨[2012最新爱情喜剧]
  10. css+div 圆角