Perl中的替换(七)
在Perl中使用s///进行替换操作,与m//进行查找操作类似。
s/with (\w+)/against $1's team/; ##第一个双斜线,表示被替代的文本。第二个双斜线,表示将替代为的文本。
s///可以有不同的定界符,但是必须保证两对字符。一对包住模式,一对包住替换字符串。
s#^https://#http://#; ##使用#号,分别包住模式和替换字符串。
s{}(); ##使用{}包住模式,()包住需要替换的字符串。
s///默认对$_进行替换操作。
$_ = "green scaly dinosaur";
s/(\w+) (\w+)/$2, $1/; ##匹配两个单词后,交换次序。$_= "scaly green dinosaur";
s/^/huge,/; ##$_ = "huge, scaly, green dinosaur";
s/^\s+//; ##将开头的空白替换为空字符串;
s/\s+$//; ##将结尾的空白替换为空字符串;
s///也可以使用绑定操作符:
$file_name =~ s#^.*/##s; ##指定左侧为操作的字符串。替换后,字符串直接改变,存储在左侧的标量变量中。
my $copy = $original =~ s/\d+ ribs?/10 ribs/r; ##使用/r修饰符,不改变原字符串,返回新的字符串给$copy。
s///也可以使用模式修饰符,/g表示全局替换,/i表示不区分大小写,/x表示用空格作为分隔符,/s表示增大"."的范围。
字符串的大小写转换。
\U将之后的所有字符转换为大写。
\L将之后的所有字符转换为小写。
\u将之后的首字符转换为大写。
\l将之后的首字符转换为小写。
\E关闭大小写转换功能。
$_ = "I saw Barney with Fred";
s/(fred|barney)/\U$1/gi; ##$_ = "I saw BARNEY and FRED"
s/(fred|barney)/\L$1/gi;
s/(\w+) with (\w+)/\U$2\E with $1/i ##$_ = "I saw FRED with barney"
s/(fred|barney)/\u$1/ig; ##$_ = "I saw FRED with Barney"
字符串的一些操作符。字符串分割与合并。
my @fields = split /separator/, $string;
my @fields = split /:/, "abc:def:g:h";
my $result = join $glue, @piece;
my $i = join ":",4,6,8,10;
m//的返回值,在列表上下文,表示捕获变量的列表。
my $data = "Barney Rubble Fred Flintstone Wilma Flintstone";
my %last_name = ($data =~ /(\w+) \s+ (\w+)/g); ##由m//直接生成哈希。
直接从命令行运行简短的perl程序。
perl -p -i.bak -w -e 's/Random/Rand/g' fred*.dat
其中-p表示自动化生成一段读再输出的小程序。不需要带输出时,可以选择-n。
-i.bak对原文件做备份。
-w开启warning。
-e表示之后是直接执行的程序代码。
fred*.dat进行ARGV参数表,表示需要处理的文本。
Perl中的替换(七)的更多相关文章
- Perl中的正则表达式
转自:http://c20031776.blog.163.com/blog/static/684716252013624383887/ Perl 程序中,正则表达式有三种存在形式 分别是 (1 模式匹 ...
- Perl中的正则表达
前几天用到了Perl语言,主要看了一下Perl中的正则表达式,在各种网页语言中,正则表达式在处理字符串的时候十分有用,所以这里就简单说一下在Perl中正则表达式的应用. 先上代码 #!/usr/bin ...
- perl命令批量替换文件内容
转自:http://www.jbxue.com/article/12638.html 使用perl命令批量替换文件内容. 对linux下的文件内容进行替换,有时不用编写perl脚本,用perl命令就可 ...
- Perl中的执行上下文
perl中的上下文 在perl中,很多地方会切换上下文.所谓上下文,它的重点在于同一个表达式出现在不同地方,得到的结果不同.换句话说,同一个表达式,它表达的值不是固定的.这就像是同一个单词,在不同语境 ...
- Perl中的匹配(六)
在Perl中,匹配的定界符如果是双斜线//,可以直接使用双斜线完成匹配操作. 如果特定条件下需要改变定界符,如改为{},[]等.需要加入m,m{},m[]等. m%^http://% 默认的模式匹配对 ...
- perl中的grep函数介绍
grep函数 (如果你是个的新手,你可以先跳过下面的两段,直接到 Grep vs.loops 样例这一部分,放心,在后面你还会遇到它) <pre>grep BLOCK LISTgrep E ...
- 在 Perl 中使用 Getopt::Long 模块来接收用户命令行参数
我们在linux常常用到一个程序需要加入参数,现在了解一下 perl 中的有关控制参数的模块 Getopt::Long ,比直接使用 @ARGV 的数组强大多了.我想大家知道在 Linux 中有的参数 ...
- Word中批量替换软回车
在平时工作中,有时候需要拷贝一些截取自网页上的文字,当选中后拷贝到Word中时,有时候在每行的结尾出现如下的符号,,这给后期文字的整理带来了很多不便,在此记录从网上获取的解决方法,以免遗忘和便于查找. ...
- SQL Server中批量替换数据
SQL Server数据库中批量替换数据的方法 SQL Server数据库操作中,我们可能会根据某写需要去批量替换数据,那么如何批量修改替换数据呢?本文我们就介绍这一部分内容,接下来就让我们一起来了解 ...
随机推荐
- php之curl实现http与https请求的方法
原文地址:http://m.jb51.net/show/56492 这篇文章主要介绍了php之curl实现http与https请求的方法,分别讲述了PHP访问http网页与访问https网页的实例 ...
- 如何迁移测试的MAGENTO到正式运行的MAGENTO
或者这个题目叫做如何改变MAGENTO的运行目录 第一,我们需要在PHPMYADMIN备份整个MAGENTO的数据.备份数据并且存为.SQL. 在这儿假设你的测试网站在http://dev.site. ...
- TCP协议中的三次握手和四次挥手
转自: http://blog.csdn.net/whuslei/article/details/6667471/ 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示:
- JMeter学习-015-JMeter 断言之-Bean Shell Assertion
前面的博文中有对 JMeter 中的 响应断言 进行了讲解并实例演示,详情敬请参阅博文:JMeter学习-007-JMeter 断言实例之一 - 响应断言. 在 JMeter 中总计提供了如下几种 B ...
- qt 控件 背景色 透明 除去边框
在调试ui的时候,需要将背景色变为透明,与母控件的颜色一致,并且除去边框. 参考链接: http://www.qtcentre.org/threads/12148-how-QTextEdit-tran ...
- NSUserDefaults 可以保存哪些类型
NSData NSString NSNumber NSDate NSArray NSDictionary *如果你想保存其他类型,如UIImage,你应该进行编码(即archive),或者将它转换为N ...
- 清除Outlook 2013中缓存的邮件地址
1.删除相关文件(可能会没有访问权限): 路径:C:\Documents and Settings\user\用户名\Application Data\Microsoft\Outlook 文件名:ou ...
- Centos php项目发布问题
LAMP环境,项目运行错误日志路径:/var/log/httpd 错误日志例如: [Sat Jul :: ] [error] [client , referer: http://192.168.100 ...
- Java遇见HTML——JSP篇之JSP内置对象(上)
一.JSP内置对象简介 1.1.内置对象简介 JSP内置对象是WEB容器中创建的一组对象,可以直接使用不需要new,如截图中的out 对象. JSP有九大内置对象: 五大常用对象: out.reque ...
- AWE、加载计数器错误
错误#1 16:28 2012-7-25数据库服务器A想开启下sql server 2000的AWE.结果发现在查询分析器中执行RECONFIGURE时报错.运行的语句为: sp_configure ...