Perl语言学习笔记 9 正则表达式处理文本
1、更换
s/PATTERN/REPLACE/;
#返回是否更换成功布尔值
能够使用捕获变量,如:s/(\w)/$1/
匹配失败则不做不论什么处理
2、定界符
对于没有左右之分的定界符。反复三次就可以,如:s///、s###
对于有左右之分的定界符,需使用两对,一对包括模式,一对包括替换字符串,这两对能够不一样。如:s{}{}、s[]{}、s<>[]
3、可选修饰符
/g可进行全局替换,替换全部匹配到的字符串,如:s/ / /g
/s:使得 . 匹配全部字符
/i:大写和小写无关
4、绑定操作符
$file_name =~ s#^.*##s;
#去除所哟Unix风格的路径
5、转义操作符
\U:所有转大写,或者到 \E 结束
\L:所有转小写,或者到 \E 结束
\u:其后的一个字符转大写
\l:其后的资格字符转小写
能够并用,\u\L 所有转小写,首字母大写
以上操作符能够在双引號内使用
6、拆分字符串:split
@fileds = split /:/,"abs:sdf:fdd";#返回结果列表
两个切割符连在一起,拆分出空字段。结尾处的会省略。
/\s+/能够进行空白切割。如:split /\s+/,$some_input;
#全部的空白都当作一个空格处理,省略开头的空字段
7、串接字符串:join
my $x = join ":",4,6,8,10;
#结果为$x = "4:6:8:10";
与split结合,先拆分。再用不同的定界符连接。
8、列表上下文中的m//
在列表上下文中使用m//时,假设匹配成功,返回全部捕获变量的列表。匹配失败返回空列表:my($first,$second,$third) = /(\s+) (\s+) (\s+)/;
/g 修饰符能够将m//匹配到很多地方。如:
9、非贪婪量词
默认情况下。/Fred.+barney/会先匹配“Fred”。然后将剩下的所有字符串匹配为“.+”。然后“.+”依次吐出一个字符。直到“barney”被匹配。此为贪婪模式。
在+、*、{}、?
之后加上“?”。会使其变为非贪婪模式。从少到多匹配;
/m:跨行的模式匹配,加上之后会匹配行内的换行符;
10、一次更新多个文件
$^I:表示备份文件的后缀名,处理之前会先做备份,从备份文件里读取。然后再创建与源文件同名的文件,写入新的信息;
11、用命令行进行在线编辑
-p:自己主动生成小程序,while循环
-i.bak:备份文件名称
-w:打开警告
-e:告诉程序后边是代码
fred*.dat:要处理的文件
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Perl语言学习笔记 9 正则表达式处理文本的更多相关文章
- Perl 学习笔记-正则表达式处理文本
1.使用正则表达式替换文本 s/// s/<pattern>;/<replacement>;/ 如果匹配失败, 则什么也不会发生, 变量也不受影响. 返回布尔值, 替换成功 ...
- Perl语言学习笔记 15 智能匹配与give-when结构
1.智能匹配操作符 替代绑定操作符: 在哈希中查找某一个键: 比較两个数组是否全然同样: 查找列表中是否存在某个元素: 智能匹配操作符与顺序无关.~~ 左右元素能够互换 2.智能操作符优先级 3.gi ...
- HTML语言学习笔记(会更新)
# HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
- 2017-05-4-C语言学习笔记
C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...
- deepin linux 学习笔记(二)——文本编辑器
目录 deepin linux 学习笔记(二)--文本编辑器 前言 nano 小巧的命令行编辑器 通用 编辑 定位 排版 配置 vim 思路独特的超级编辑器 命令模式 插入模式 底线模式(末行模式) ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
- Haskell语言学习笔记(88)语言扩展(1)
ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
随机推荐
- python 读取图片的尺寸、分辨率
#需要安装PIL模块 #encoding=gbk#--------------------------------------------------------------------------- ...
- JVM类加载过程学习总结
JVM类加载过程学习总结 先不说JVM类加载的原理,先看实例: NormalTest类,包含了一个静态代码块,执行的任务就是打印一句话. /** * 在正常类加载条件下,看静态代码块是否会执行 * @ ...
- android5.0(Lollipop) BLE Central牛刀小试
转载请表明作者:http://blog.csdn.net/lansefeiyang08/article/details/46482073 昨天写了android L BLE Peripheral的简单 ...
- 如何安装(装载)axure组件(部件)
我们在网络上经常可以下载到很多网友精心设计的axure组件,这些组件给我们节省了很多的时间,方便了我们进行原型设计,可是对于很多刚刚接触axure的朋友就遇到了2个问题: 第一:到哪里去下载这些组件 ...
- MySQL生成-单据号不重复
需求生成一个单据编号 单据编号结构: “单据类型” + “日期” + “流水号” 例子 : GD201605230000007 代码: DELIMITER $$ CREATE PROCEDURE `y ...
- Mac os 进行Android开发笔记(1)
1> MAC OS Android环境搭建: 2>MAC OS 配置 Andoid ADB: 3>MAC OS 上进行Android真机调试: Android 开发环境搭建: 点击 ...
- 通过IP或socket获取对方的MAC地址
1.通过已经连接的socket文件获取: int getpeermac( int sockfd, char *buf ) { int ret =0; struct arpreq arpreq; str ...
- redhat6.3+oracle11GR2 单库 安装规划
oracle11g单实例安装+redhat6.3 规划 一.查看环境 [root@JSCS78DB dev]# cat /etc/redhat-release Red Hat Enterprise ...
- <转载>CSS解决图片过大撑破DIV的方法
DIV+CSS网页内容中如果插入大于DIV层宽度显示,过大的图片将会撑破网页宽度显示从而网页严重变形,您是否遇到过?这里DIVCSS5给大家介绍几种解决图片撑破撑开网页DIV层方法. 图片撑破宽度解决 ...
- HTTP协议的请求和响应学习
本篇作为学习servlet的前提,http协议是学习JavaWeb开发的基石,不深入了解http协议,就不能说掌握了JavaWeb开发. HTTP协议有两个版本:HTTP1.0和HTTP1.1,那么有 ...