Perl語言入門 用正規表示式處理文

2021-06-21 22:58:30 字數 1577 閱讀 4981

用s///替換:將指定變數合乎模式的部分替換為另乙個串

$_="he's out bowling with barney tonight.";

s/bareny/fred/; #把barney替換為fred

print "$_\n";

如果匹配失敗,則什麼事都不會發生,變數也不受影響

全域性替換/g: 即使有其他可以替換的部分,s///也只會進行一次替換,/g修飾符可讓s///進行所有可能的不重複的替換

繫結操作符:=~ 用法同m//

大小寫轉換:

\u 將其後所有字元轉換成大寫

\l 將其後所有字元轉換成小寫

\e 結束大小寫轉換的影響

小寫形式\l \u只影響其後的第乙個字元

如s/fred/\u\l$1/ig;表示全部轉小寫,但是首字母大寫

split操作符:根據分隔符拆開乙個字串,任何匹配模式的內容都不會出現在返回欄位中

用法為@fields=split /separator/, $string;

如@fields=split /:/,"abc:def::g:h"; #得到("abc","def","","g","h")

split會保留開頭處的空欄位,並省略結尾處的空欄位

split預設以/\s+/模式分割$_,所有的空白當成乙個空格來處理

join函式:與split功能相反,my $result=join $glue,@pieces;

如my $x=join ":",4,6,8,10,12; #$x為 "4:6:8:10:12"

注意join的第乙個引數是字串

列表上下文中的m//:在列表上下文中使用模式匹配操作符(m//)時,如果匹配成功,那麼返回的是

所有捕獲變數的列表,如果匹配失敗,則返回空列表

$_="hello there,neighbor!";

my($first,$second,$third)=/(\s+) (\s+), (\s+)/;

print "$second is my $third\n";

/g操作符同樣也可以用在m//操作符上

my $text="fred dropped a 5 ton granite block on mr.slate";

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

print "result: @words\n";

#result: fred dropped a ton granite block on mr slate

如果模式中有多對圓括號,那麼每次匹配就能捕獲多個串,如下每次模式匹配成功

就會返回一對**獲出來的值,正好成為新雜湊的鍵值對

my $data="barney rubble fred flintstone wilma flintstone";

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

非貪婪量詞:之前提到的量詞都是貪婪量詞,在保證整體匹配的前提下,它們會盡量匹配長字串

對每個貪婪量詞,都有乙個非貪婪量詞,匹配的字串越短越好

+? *? ?? {}?

跨行的模式匹配:當模式加上/m修飾符之後,就可以讓它們也匹配串內的換行符

Perl 正規表示式

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

Perl正規表示式

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

perl 正規表示式

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