Perl语言入门(06+ 正则表达式)——小骆驼书正则表达式相关章节笔记

    由于公司需要,本人最近在学习Perl这种脚本语言,本文是我在学习Perl的过程中总结出来的一些心得和笔记,希望能够帮助也在学习Perl的各位同僚。废话不多说直接上干货!!!

————————————————————————— 干货分割线 ———————————————————————————


$str =~ /\p{Space}/ #有无空格

$str =~ /\p{Digit}/ #数字

if($str =~ /\p{Hex}/) #16进制数 0-9A-Fa-f

p改为P,上面表达式表示否定意义

 

元字符

.  :匹配任意一个字符,换行符除外

\

*: 匹配0或多次

.*:匹配任意字符0-无限次

+ :匹配1次以上

?:匹配0次或1

()

 

模式分组()

反向引用\1,\2

 

 

(.)\1 匹配连续出现的两个同样的字符。

 

$_ = “yabba dabba doo”;

/y(....) d\1/ 或者/y(.)(.)\2\1/ #匹配abba

$_=”aa11bb”

/(.)\g{1}11/ 或者g1 #g{N}N为组号

 

|:或匹配

 

 

 

字符集

放在[]中,他只匹配字符集中的单个字符,exp:[abcdefg] 只匹配一个

[a-zA-Z]

[\000-\177]:匹配任意一个7位的ASCII字符

脱字符^

[^def]:匹配除def以外的任何字符

[^\n-z]:匹配除了n,-,z以外的字符

字符集括号外面的连字符-没有特殊意义

\d :数字字符集 各种语言的数字

/a: 严格按照ASCII范围匹配数字字符时,(写在末尾)  /HAL-[\d]+/a

\s :匹配空白符,同\p{Spacs}

 

 

\R: 断行符  不管是\r\n或者\n都行

\w:单词字符

/s匹配任意字符,包括换行符

 

 

/x 可以在模式中添加空格,方便阅读

\s \s* \s+ 匹配空白符

/i 大小写无关

/a  ascii码方式

/u Unicode方式  【更宽泛】

/l遵从本地化语言设置

 

若使用两个a,进一步表示仅仅采用ascii方式的大小写映射处理

 

锚位

\A: 匹配字符串的绝对开头 ,/\Ahttp:/i   :是否以http:开头

\z: 匹配字符串的绝对末尾。 /\.png\z/i :是否以.png结尾

\Z 行末锚位,允许后面出现换行符

/\A\s*\Z/ :匹配空行【允许包含若干空白符,包括制表符和空格】

^:字符串开头锚位 /^barry/m

$:字符串结尾锚位 /fred$/m

$/m :对多行内容进行匹配

若无/m,^$的行为同\A,\z

\b单词[a-z,0-9,_]边界锚位\B /\bfred\b/ 可匹配fred 但不能匹配frederick,afred

 

不捕获圆括号(?:Perl正则表达式允许使用圆括号分组但不进行捕获,只是分组用

?四种用法:本身,数量可有可无,非贪婪匹配,放弃捕获

 

 #bronto只是起到匹配作用,并不想用来捕获,$1就可以捕获(|)了

If(/(?:bronto)?saurus (steak|burger)/){   

Print “Fred wants a $1\n”;

}

 

捕获内容直接命名 ?<LABEL>PATTERN

%+ :保存捕获组捕获到的内容 ,键即为捕获时用的特殊标签

My $names = ‘fred or barney’;

If($names =~ m/(\w+)(and |or)(\w+)/) #对比

If($names =~ m/(?<name1>\w+)(?:and | or)(?<name2>\w+)/){

Say “I saw $+{name1} and $+{name2}”; #输出捕获

}

 

 

\k<label> 等效于 \g{label}

 

 

不加()也能使用的捕获变量,保存在:$&$`$

If(“hello there,neighbor” =~ /\s(\w+),/){

Print “that actually matched ‘$&’”; #输出形式  there

}

$&保存的是【_there,

目标字符串保存在$1中:【there

目标字符串前的内容放在$`:  _

目标字符串后的内容放在$’:  ,

 

 

模式中的量词

* {0}】,+{1}】,?【{0,1}】,{}

/a{5,15}/ a出现20次只会匹配前15

 

 

/g可以让s///进行全局替换

删除开头结尾的空白

S/^\s+//  开头

S/\s+$//   结尾

或者 s/^\s+|\s+$//g  效率慢

不同定界符的写法:

 


 

 

 

\U将它后面的字符全部转义成大写

\L转成小写

\E关闭大小写转换

使用小写(\l,\u)只影响紧跟其后的第一个字符

 


非贪婪量词:+?,*?,{5,10}?,{8}?,??

/fred.+?barney/  匹配最少的字符串

 

$^I: 内置控制编辑器的值

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Perl语言入门(第五版),本是为中文版本,英文原版下载地址:http://download.csdn.net/source/2801846。 原名: Learning Perl, 5th Edition;原出版社: O'Reilly Media, Inc. ;作者: Randal L.Schwartz Tom Phoenix brian d foy;译者: 盛春 蒋永清 王晖;出版社:东南大学出版社 内容简介 《perl语言入门》也就是大家所称道的“小骆驼”,是perl程序设计人员最为仰赖的启蒙读物之一。自1993年以来,这本就成为热卖的perl语言教学材料,而此次新版又涵盖了perl 5.10的最新变化。本的诸位作者自1991年起就开始在stonehenge consulting从事perl教学工作,多年的课堂教学实践和积累下来的点滴经验,形成了本特有的教学节奏,以及务实的知识点取舍。随文而至的习题,可以让你及时巩固各种概念,强化理解和吸收。本内容涵盖:. ·perl的变量类型 ·子程序 ·文件的操作 ·正则表达式 ·字符串的操作.. ·列表与排序 ·进程的管理 ·智能匹配 ·第三方模块的使用 有些人只是想要完成任务,perl语言为此而生。perl的最初目标只是为了协助unix系统管理员完成日常繁琐的文本数据处理工作。时至今日,perl已发展成为一套功能齐备的程序语言,几乎可以在任何操作系统上完成各种任务——从简单的命令行工具到web应用开发,及至生物信息学、金融数据分析等等不一而足。其他籍可能会着重于教会你使用perl语言来编程,可本不同,我们是想要你成为一名真正的perl程序员。... 目录 前言. 第1章简介 问题与答案 “perl”这个词是什么意思? 如何取得perl? 我该怎么编写perl程序? 走马观花 习题 第二章标量数据 数字 字符串 perl内建警告信息 标量变量 用print输出结果 if控制结构 获取用户输入 chomp操作符 while控制结构 习题 第三章列表与数组 .访问数组中的元素 特殊的数组索引值 列表直接量 列表的赋值 字符串中的数组内插 foreach控制结构 标量上下文与列表上下文 列表上下文中的(stdin) 习题 第四章子程序 定义子程序 调用子程序 返回值 参数 子程序中的私有变量 长度可变的参数列表 关于词法(my)变量 use strict编译命令 return操作符 非标量返回值 持久性私有变量 习题 第五章输入与输出 读取标准输入 钻石操作符输入 调用参数 输出到标准输出 使用printf格式化输出 文件句柄 打开文件句柄 用die处理严重错误 使用文件句柄 复用标准文件句柄 使用say来输出 习题 第六章哈希 什么是哈希? 访问哈希元素 哈希函数 哈希的典型应用 %env哈希 习题 第七章漫游正则表达式王国 什么是正则表达式? 使用简易模式 字符集 习题 第八章以正则表达式进行匹配 以m//进行匹配 可选修饰符 锚位 绑定操作符=~ 模式串中的内插.. 捕获变量 通用量词 优先级 模式测试程序 习题 第九章用正则表达式处理文本 用s///替换 可选修饰符 split操作符 join函数 列表上下文中的m// 更强大的正则表达式 习题 第十章其他控制结构 unless控制结构 until控制结构 条件修饰词 裸块控制结构 elsif子句 自增和自减 for控制结构 循环控制 三目操作符?: 逻辑操作符 习题 第十一章perl模块 寻找模块 安装模块 使用简单模块 习题 第十二章文件测试 文件测试操作符 localtime函数 按位运算操作符 习题 第十三章目标操作 在目录树中移动 文件名通配 文件名通配的另一种语法 目录句柄 递归的目录列表 操作文件与目录 删除文件 重命名文件 链接与文件 建立及移除目录 修改权限 更改隶属关系 修改时间戳 习题 第十四章字符串与排序 在字符串内用index搜索 用substr处理子串 高级排序 习题 第十五章智能匹配与given-when结构 智能匹配操作符 智能匹配操作的优先级 given语句 多个项目的when匹配 习题 第十六章进程管理 system函数 exec函数 环境变量 用反引号捕获输出结果 将进程视为文件句柄 用fork开展地下工作 发送及接收信号 习题 第十七章高级perl技巧 用eval捕获错误 用grep来筛选列表 用map对列表进行转换 不带引号的哈希键 切片 习题 附录a习题解答 附录b超越小骆驼...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值