Perl之正規表示式基礎(三)

2021-05-12 07:20:11 字數 1470 閱讀 9631

最開始我說過,perl的最強大之處在於處理文字。然而,在前兩篇(一 、二 )中,我只介紹了如何來匹配模式。本文中我將演示如何通過模式來改變字串,即如何使用正規表示式來處理文字。

替換

s///:如果將m//看作「查詢」,那s///操作則類似於「查詢並替換」,它將替換模式所匹配上的部分。m//可以和任何字串表示式進行比配,但顯然s///只能修改被稱為左值的資料,通常是乙個變數。

/g:全域性替換,s///只進行一次替換。

s/^/s+//:將開頭的空白去掉。

s//s+$//:將結尾的空白去掉。

s/^/s+|/s+$//g:將開頭結尾的空格都去掉。

其它可選的修師符

/i、/x和/s:與普通模式匹配中出現過的修飾符意義相同。

繫結操作

類似於普通模式匹配中,可以使用繫結操作符=~改變s///的替換目標。

大小寫轉換

/u:要求後面的均大寫。

/l:要求後面的均小寫。

/e:預設時,/u與/l會影響到其後的所有替換字串,/e被用來改變這種影響。

/u/l:第乙個字元大寫,其它均小寫。

下面是乙個例子,

$_ = "aaron and jessie";

s/(aaron|jessie)//u$1/gi;                     # $_ = "aaron and jessie"

s/(aaron|jessie)//l$1/gi;                      # $_ = "aaron and jessie"

s/(/w+) and (/w+)//u$2/e and $1/i;    # $_ = "jessie and aaron",而非"jessie and aaron"

s/(aaron|jessie)//u$1/ig;                      # $_ = "jessie and aaron"

s/(aaron|jessie)//u/l$1/ig;                   # $_ = "jessie and aaron"

split操作

my @fields = split /sep/, $string:split根據模式將字串分割開,這裡的sep可以是冒號、空白等簡單字元,也可以是一般的正規表示式。

空元素規則:預設情況下,開頭的空元素被返回,但結尾的空元素被丟棄。如果需要結尾的空元素,可以使用split的第三個引數-1。

my @fields = split: 預設情況下,split對$_操作,模式為空白,即類似於split //s+/, $_,除了這種情況下開頭的空元素將被丟棄。

join函式

my $result = join $sep, @fields:join函式不使用模式,它恰恰完成同split相反的操作。

Perl 正規表示式

正規表示式文中列表 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個後向引用 或乙個八進位制轉義符。匹配輸入字串的開始位置。如果設定了 regexp 物件的multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束位置。如果設定了 regexp 物件的multiline 屬性...

Perl正規表示式

元字元 元字元的含義是具有特殊含義的字元,即為元字元,元字元包括 點號能夠匹配所有的單字元,但是換行字元除外 n 簡易量詞 記載匹配正規表示式的時候有些需要重複的字元或者字串,我們在表示這種重複的形式的時候,即是量詞,我們知道的量詞有 表示至少重複一次,表示重複一次或者一次 以上,指的是重複一次或者...

perl 正規表示式

匹配 m 還可以簡寫為 略去 m 替換 s 轉化 tr 這三種形式一般都和 或 搭配使用 其中 表示相匹配,在整條語句中讀作 does,表示不匹配,在整條語句中讀作 doesn t 並在左側有待處理的標量變數。如果沒有該變數和 操作符,則預設為處理 變數中的內容。舉例如下 str i love pe...