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还简单. ...
随机推荐
- WCF技术剖析之七:如何实现WCF与EnterLib PIAB、Unity之间的集成
原文:WCF技术剖析之七:如何实现WCF与EnterLib PIAB.Unity之间的集成 在这之前,我写过深入介绍MS EnterLib PIAB的文章(参阅<MS Enterprise Li ...
- eclipse 默认jdk 的设置 eclipse.ini -vm 参数
eclipse 的配置文件 eclipse.ini 不仅仅可以设置eclipse的堆栈内存大小,也可设置默认使用的jdk版本. 一.现有个eclipse 默认启动jdk版本是jdk1.5,需更改为1. ...
- Linux下搭建Hadoop具体步骤
装好虚拟机+Linux.而且主机网络和虚拟机网络互通. 以及Linux上装好JDK 1:在Linux下输入命令vi /etc/profile 加入HADOOP_HOME export JAVA_HOM ...
- Spring MVC程序
Spring MVC程序(IDEA开发环境) 回顾Java平台上Web开发历程来看,从Servlet出现开始,到JSP繁盛一时,然后是Servlet+JSP时代,最后演化为现在Web开发框架盛行的 ...
- QModelIndex有internalPointer()函数,可以存任何数据,另有QAbstractItemModel::createIndex来创造节点
整个model的节点数据,都靠它来记录了. 另有一个创造节点的函数(自带函数): QModelIndex QAbstractItemModel::createIndex(int arow, int a ...
- 嵌入式ntp服务器的移植
一.交叉编译 1.官网下载http://www.ntp.org/点击download选项页 我的版本是ntp-4.2.6p5.tar.gz 2.解压 tar -zxvf ntp-4.2.6p5.tar ...
- 安卓开发23:Service详细解读
关于Service Service说明:Service是android 系统中的四大组件之一(Activity.Service.BroadcastReceiver.ContentProvider),它 ...
- 高性能C++网络库libtnet实现:Connection
Connection libtnet只支持IPv4 TCP Connection,之所以这么做都是为了使得实现尽可能的简单.我们主要在Connection类中封装了对tcp连接的操作. Connect ...
- 浅谈MySQL 数据库性能优化
MySQL数据库是 IO 密集型的程序,和其他数据库一样,主要功能就是数据的持久化以及数据的管理工作.本文侧重通过优化MySQL 数据库缓存参数如查询缓存,表缓存,日志缓存,索引缓存,innodb缓存 ...
- oracle切割字符串后以单列多行展示
原始的sql: select substr(field1, instr(field1, '|', 1, rownum) + 1, instr(field1, '|', 1, rownum + 1) - ...