perl學習筆記之

2021-04-25 11:10:23 字數 2595 閱讀 4698

1 表示式修飾符if、unless、while、untile、foreach

2 data檔案控制代碼:__data__標誌著指令碼的邏輯結束,並開啟data檔案控制代碼用於讀取。

3 m運算子:如果包圍正規表示式的定界符是斜槓,m運算子是可選的;如果忙亂變了定界符,則是要求的。

格式:/regular expression/ or m#regular expression# or m(regular expression)

匹配修飾符:i-大小寫無關  g-全域性匹配   x-允許注釋與空白  o-只編譯模式一次

s-嵌入新行時,將字串作為單行處理  m-將字串作為多行處理

4 給特殊標量$&賦值在上一次成功搜尋中匹配的字串。$'(備份引號)儲存在匹配模式之前找到的內容,而$'(直接引號)儲存模式匹配之後找到的內容。

5 s運算子和替換,格式:s/old/new/ or s(odl)/new/ or ...

替換修飾符:以上提到的+e將夫換端作為表示式求值

6 格式繫結運算子:

前面在預設模式空間$_變數上的模式搜尋是隱式完成的,如果不將字串儲存在變數$_中,而且需要對字串過行匹配或替換,就要使用模式繫結運算子=~或!~。它們還在tr函式中用於字串翻譯。

7 用於單字元的元字元:

.-除新行外的任何字元               [a-z0-9]任何單字元

[^a-z0-9]不在集合中的任何單字元     /d-乙個數字(大寫為非數字)

/w-數字(字)字元(大寫為非數字字母(非字)字元

注意:

s修飾符:點元字元和新行

脫字元^

posix字元類:用於確保跨平台可移植的工業標準(求反字元,只要在字串前加^)

[:alnum:]字母數字字元                  [:alpha:]字母字元

[:ascii:]0-127數值字元                [:cntrl:]控制字元

[:digit:]數字                         [:graph:]字母數字標點以外的非空字元

[:lower:]小寫                         [:print:]與[:graph:]同,但有空格

[:punct:]標點                         [:space:]所有的空白字元

[:upper:]大寫                         [:word:]字母或下劃線

[:xdigit:]十六進製制

8 白空元字元:(大寫為非)

/s-白空字元                   /n新行           /r回車

/t製表位                      /h進紙

9 關閉貪婪性的元字元。通過在貪婪限定符之後放置問號,就關閉了貪婪性,搜尋在第乙個匹配後結束,而不是到最後乙個。

10 錨點:

^行或字串的開頭              $行或字串的末尾

/a只匹配字串的開頭           /z匹配字串或行的末尾

/z只匹配字串的末尾           /g匹配前面的m//g離開之處

/b匹配邊界(大寫為非邊界)

m修飾符用於控制$和^錨元字元的行為。含有新行的字串作為多行對待。

11 記憶或捕獲:如果正規表示式包含在括弧中,則建立子模式。子模式儲存在特殊編號的標量變數中,從$1開始。這些變數以後用於程式並保持到發生其化成功的模式匹配,些是將其清除。即使想要控制貪婪元字元或前一例子中展示的交替行為,儲存子模式也具有***.可以使用?:元字元取消子模式的捕獲。

例:

$fruit=~/(.*)/s(.*)/s(.*)/;

print "$1/n";

print "$2/n";

print "$3/n";

print "-"x39,"/n";

$fruit=~/(.*?)/(.*?)/s(.*?)/;

print "$1/n";

print "$2/n";

print "$3/n";

(output)

peaches

plums

-----------------------

pears

peaches

12 前後查詢元字元:

/pattern(?=pattern)/正向前查詢         /pattern(?!pattern)/負向前查詢

(?<=pattern)/pattern/正向後查詢        (?13 tr或y函式:以一種一對一的對應,將搜尋字串中的字元轉換成替換字串中的字元。返回其替換的字元數。d選項刪除搜尋字串,c選項補充搜尋字串,s選項稱為擠壓選項。

14 統一字元編碼unicode:是解決這個問題的一種方式,通過建立新的字符集,稱為utf8或uft16,其中的字母不限制為一位元組。(先用use8包含)(如/p的p大寫,則意義相反)

/pascii字元               /p控制字元

/p     /p字母數字或標點字元          /p

/p字母數字或標點字元或空格   /p標點       /p白空

/p大寫字母   /p字母數字字元或下劃線   /p十六進製制

推薦投訴

Perl 學習筆記

在linux上,如果遇到這樣的提示 can t locate module datetime.pm in inc 意味著perl模組沒有安裝全,可以用cpan來安裝缺失的模組 perl mcpan e install module build 如果系統上很多模組都已經很舊了,用這個命令來自動更新 u...

perl 學習筆記

perl 語法 一 資料結構 標量 陣列 雜湊 0 八進位制 0x 十六進製制 注釋 二 字串 1 字元鏈結 2 單引號內字元不會被轉義 3 v字元 乙個以 v 開頭,後面跟著乙個或多個用句點分隔的整數,會被當作乙個字串文字。foo v102.111.111 4 here 文件 print 5 特殊...

Perl學習筆記

標量 陣列陣列是標量資料的有序列表,是多個標量資料的一種集合。可以包含任意多個元素,從0到全部佔滿記憶體。以 符號作為標識。1,2,3 包含1,2,3三個數字的列表 1,2,3 三個數字,最後逗號被省略 test 4.5 兩個值 空列表 零個元素 1 5 代表 1,2,3,4,5 5 1 空列表,從...