Perl模式匹配選項詳解
本文和大家重點討論一下Perl模式的概念,Perl模式指在字符串中尋找的特定序列的字符,由反斜線包含:/def/即Perl模式def。其用法如結(jié)合函數(shù)split將字符串用某Perl模式分成多個單詞:@array=split(//,$line)。
Perl模式簡介
Perl模式指在字符串中尋找的特定序列的字符,由反斜線包含:/def/即Perl模式def。其用法如結(jié)合函數(shù)split將字符串用某Perl模式分成多個單詞:@array=split(//,$line);
Perl模式匹配選項
選項描述
g匹配所有可能的Perl模式
i忽略大小寫
m將串視為多行
o只賦值一次
s將串視為單行
x忽略Perl模式中的空白
1、匹配所有可能的Perl模式(g選項)
@matches="balata"=~/.a/g;#now@matches=("ba","la","ta")
匹配的循環(huán):
while("balata"=~/.a/g){
$match=$&;
print("$match\n");
}
結(jié)果為:
ba
la
ta
當使用了選項g時,可用函數(shù)pos來控制下次匹配的偏移:
$offset=pos($string);
pos($string)=$newoffset;
2、忽略大小寫(i選項)例
/de/i匹配de,dE,De和DE。
3、將字符串看作多行(m選項)
在此情況下,^符號匹配字符串的起始或新的一行的起始;$符號匹配任意行的末尾。
4、只執(zhí)行一次變量替換例
- $var=1;
- $line=;
- while($var<10){
- $result=$line=~/$var/o;
- $line=;
- $var++;
- }
- 每次均匹配/1/。
5、將字符串看作單行例
/a.*bc/s匹配字符串a(chǎn)xxxxx\nxxxxbc,但/a.*bc/則不匹配該字符串。
6、在Perl模式中忽略空格
/\d{2}([\W])\d{2}\1\d{2}/x等價于/\d{2}([\W])\d{2}\1\d{2}/。
【編輯推薦】