Perl學習筆記 No.9

來源:互聯網
上載者:User

使用Regex處理檔案

1.   s///,s/abc/fred/  先匹配abc,如果匹配上,使用fred替換abc;如果沒有匹配上,則什麼都不做

2.   s///g,全域替換,s/abc/fred/g,將所有abc都替換成fred

3.   可以使用其他符號替代/作為分隔字元

4.    /six同樣適用

5.    $_ = “I saw Barney with Fred.”;
       $_ =  s/(fred|barney)//U$1/gi;                    # 現在是 “I saw BARNEY with FRED.”

       /U後面的全部大寫,同理,/L後面的全部小寫,要終止效果,使用/E

6.    /l和/u只針對後面的一個字元

7.    /u/L 連用,表示第一個字母大寫,其他小寫

8.    以上修飾符也可以在print語句的""中使用

9.    split不能分割用,逗號隔開的資料...0.0

10.  split將模式與字串比較,將由 分離符所分隔開的子串作為列表返回回來.比如,@fields = split/:/,"abc:def:g:hij";

11.  如果兩個分隔字元連續出現,則會返回空元素,但結尾的空元素被丟棄

12.   預設時,split 對 $_操作,模式為空白.my @fields = split; #相當於 split//s+/,$_;但是也有區別,就是會將開頭的空元素丟棄

13.   join函數,my $x = join “:”, "4, 6, 8, 10, 12"; #$x 為 4:6:8:10:12

14.   如果第二個參數只有一個或沒有元素,則只返回一個或空

15.   切記join第一個參數為字串,而不是模式

16.   在列表上下文中,匹配運算式返回的也是列表

        my $text = "I love you!I love my city!";

        my @result = ($text =~ /[a-z]+/gi);

        print "@result/n"; #輸出: I love you I love my city

17.  如果不止一個括弧,則每次返回不只一個字串.例如把字串放到hash中:

        my $data = "Barney Rubble Fred Flintstone Wilma Flintstone";

        my %last_name = ($data =~ /(/w+)/S+(/w)/g );

        每當模式比對成功,則返回一對值,成為hash的key/value

18.   非貪婪數量詞...前面講到的+,*,?,{}都是貪婪數量詞,就是先吃再吐(回退).非貪婪的,就是先匹配再吃.具體效率其實與資料相關.

19.   +?,*?,{}?,?? 就是全部非貪婪數量詞

20.   /m修飾符,用於處理多行字串(有多個分行符號)

21.   $^I 此標量的值,可以決定while(<>)備份檔案的類型,比如 $^I = ".bak";或者$^I="~";

22.   在開括弧(後面加上?:,表示這個括弧只分組,不引起記憶體變數的分配

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.