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 -n -e 'print "\t gcc test_time.c" ' print實現標準輸出
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的Perl中的替换(七)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【POJ 3614 Sunscreen】
- 下一篇: [程序人生]: 判断字符串是否为出栈序列