使用正規表示式時,需要使用兩個字串處理運算子:模式匹配運算子m//和替換運算子s///。此處還將附帶介紹另乙個密切相關的運算子,即轉換運算子tr///,它進行一些簡單的轉換,但不使用正規表示式。
while($line=<>)
說明:用=~運算子來指定m//運算子查詢的字串。
當使用//做界定符時m可省略,即m/exit/ 和/exit/等效。
但是使用自己規定的界定符時一定要帶m,如m@exit@,m,m=exit=(和m/exit/等效)。
$text = "pretty young, but not very young.";
$text =~ s/young/old/;
print $text;
pretty old, but not very young.
s///和m//一樣可以將//替換為自己習慣的界定符。
m//和s///都是從左向右做匹配,一旦匹配成功則不往下繼續執行匹配。
我們可以使用修飾符,使它們的功能更強大。下面列出一些常用的與m//和s///一起使用的修飾符:
i --- 忽略大小寫
g --- 在全域性範圍內執行所有可能的操作
m --- 讓^和$匹配換行符/n
x --- 忽略模式中的空白,並允許進行注釋
s --- 讓. 匹配新行
o --- 僅對模式進行一次編譯
perl中在正規表示式中使用的特殊字元(使用時前面加上反斜線):
/d匹配非數字字元
/d匹配數字字元
/l小寫,直到遇到/e
/l小寫下乙個字元
/n換行
/r回車
/s匹配非空白字元
/s匹配空白字元
/t製表符
/u大寫,直到遇到/e
/u大寫下乙個字元
/w匹配非單詞字元
/w匹配乙個單詞字元(字母數字字元和「_」)
所有可用的perl量詞:
*匹配0詞或者多次
+匹配1次或者多次
?匹配1次或者0次
匹配n次
匹配至少n次
匹配至少n次,但只多m次
斷言(也稱為錨),用來匹配字串中的某些條件,非真實資料。
下面是一些合法的perl斷言:
^匹配行首
$匹配行尾(或末尾前的新行)
/a僅僅匹配字串的開頭
/b匹配非單詞邊界
/b匹配單詞邊界
/g僅僅匹配前乙個m//g剩餘的內容(僅僅能和/g一起使用)
/z僅僅匹配字串的末尾,或者末尾前的新行
/z僅僅匹配字串的末尾
perl中的元字元:
包括 / | (){}^$*+?.
使用時,在它們面前加入反斜線/,就可以確保它們照字面意思解釋,而不是做元字元用。
Perl語言程式設計 正規表示式
perl語言之所以是一種非常擅長文字處理的語言,我想很多都是由於正規表示式的緣故。perl語言中的正規表示式功能基本是所有常用語言中最強大的,以至於很多語言設計正規表示式支援的時候都參考perl語言的正規表示式。正規表示式描述的是一種匹配模式,換言之就是可以快速判斷目標字串是否與我們提供的模板匹配,...
Perl 正規表示式
正規表示式文中列表 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個後向引用 或乙個八進位制轉義符。匹配輸入字串的開始位置。如果設定了 regexp 物件的multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束位置。如果設定了 regexp 物件的multiline 屬性...
Perl正規表示式
元字元 元字元的含義是具有特殊含義的字元,即為元字元,元字元包括 點號能夠匹配所有的單字元,但是換行字元除外 n 簡易量詞 記載匹配正規表示式的時候有些需要重複的字元或者字串,我們在表示這種重複的形式的時候,即是量詞,我們知道的量詞有 表示至少重複一次,表示重複一次或者一次 以上,指的是重複一次或者...