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實現標准輸出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM