成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Perl學習筆記---Perl模式匹配

開發 架構
本文向大家簡單介紹一下Perl模式匹配的概念,模式指在字符串中尋找的特定序列的字符,由反斜線包含:/def/即模式def。

本文和大家重點討論一下Perl模式匹配的概念,主要包括Perl模式匹配的語法和特殊字符等內容,希望通過本文的介紹你對Perl模式匹配的概念有明確的認識。

Perl模式匹配

模式指在字符串中尋找的特定序列的字符,由反斜線包含:/def/即模式def。

一、Perl模式匹配的語法

m/def/
例如if(m/def/){}這是在$_中尋找def匹配.如果將模式括起來的字符(稱為界限符)是斜杠,那么編寫Perl模式匹配代碼時也可以不帶m。
/def/
Perl模式匹配的操作符=~,!~若在該字符串中找到了該模式,則返回非零值,即true,不匹配則返回0,即false。!~則相反。這兩者適合條件控制.
例如 

  1. if($question=~/please/)    
  2. {    
  3. print("Thankyouforbeingpolite!\n");    
  4. }    
  5.  

 二、Perl模式匹配中的特殊字符

2.1+

+用于使前面的字符與后面的字符至少匹配一次,也可以任意次地進行匹配.類似于windows中*例如/d+g/能匹配的dog,dogg,dooooog/ab+/在字符串abbc中匹配的將是abb,而不是ab。

2.2[]和[^]

[]意味著匹配一組字符中的一個
^表示除其之外的所有字符
例如/w[abcd]s/能匹配的was,wbs,wcs,wds
/w[^ab]s/不能匹配的was,wbs
也可以寫成如下形式
/w[a-z0-9A-Z]s/

2.3字符*和?

它們與+類似,區別在于*匹配0個、1個或多個相同字符,?匹配0個或1個該字符。
例如/de*f/匹配df、def、deeeef等;/de?f/匹配df或def。

2.4位置通配符(錨模式)

^或\A僅匹配串首
$或\Z僅匹配串尾
\b匹配單詞邊界
\B單詞內部匹配
例如:/^def/只匹配以def打頭的字符串,/$def/只匹配以def結尾的字符串,結合起來的/^def$/只匹配字符串def(?)。\A和\Z在多行匹配時與^和$不同。

\b在單詞邊界匹配:/\bdef/匹配def和defghi等以def打頭的單詞,但不匹配abcdef。/def\b/匹配def和abcdef等以def結尾的單詞,但不匹配defghi,/\bdef\b/只匹配字符串def。注意:/\bdef/可匹配$defghi,因為$并不被看作是單詞的部分。

\B在單詞內部匹配:/\Bdef/匹配abcdef等,但不匹配def;/def\B/匹配defghi等;/\Bdef\B/匹配cdefg、abcdefghi等,但不匹配def,defghi,abcdef。

2.5字符轉義類

\d任意數字[0-9]
\D除數字外的任意字符[^0-9]
\w任意單詞字符[_0-9a-zA-Z]
\W任意非單詞字符[^_0-9a-zA-Z]
\s空白[\r\t\n\f]
\S非空白[^\r\t\n\f]

2.6.

字符"."匹配除換行外的所有字符,通常與*合用。

2.7匹配指定數目的字符

字符對{}指定所匹配字符的出現次數。
如:/de{1,3}f/匹配def,deef和deeef;
/de{3}f/匹配deeef;
/de{3,}f/匹配不少于3個e在d和f之間;
/de{0,3}f/匹配不多于3個e在d和f之間。

2.8指定選項

字符"|"指定兩個或多個選擇來匹配模式。如:/def|ghi/匹配def或ghi。
這些轉義符有一定的操作順序:
()模式內存
+*?{}出現次數
^$\b\B錨
|選項

2.9模式次序變量

在Perl模式匹配后調用重用部分的結果可用變量$n,全部的結果用變量$&。
$string="Thisstringcontainsthenumber25.11.";
$string=~/-?(\d+)\.?(\d+)/;#匹配結果為25.11
$integerpart=$1;#now$integerpart=25
$decimalpart=$2;#now$decimalpart=11
$totalpart=$&;#nowtotalpart=25.11 #p#

三、Perl模式匹配選項

g匹配所有可能的模式
i忽略大小寫
m將串視為多行
o只賦值一次
s將串視為單行
x忽略模式中的空白

3.1、匹配所有可能的模式(g選項)

@matches="balata"=~/.a/g;#now@matches=("ba","la","ta")
匹配的循環:
 

  1. while("balata"=~/.a/g){  
  2. match=$&;  
  3. print("$match\n");  
  4. }  

結果為:
ba
la
ta
當使用了選項g時,可用函數pos來控制下次匹配的偏移:
$offset=pos($string);
pos($string)=$newoffset;

3.2、忽略大小寫(i選項)例

/de/i匹配de,dE,De和DE。

3.3、將字符串看作多行(m選項)

在此情況下,^符號匹配字符串的起始或新的一行的起始;$符號匹配任意行的末尾。

3.4、只執行一次變量替換例

  1. var=1;  
  2. line=<STDIN>;  
  3. while($var<10){  
  4. result=$line=~/$var/o;  
  5. line=<STDIN>;  
  6. $var++;  
  7. }  

每次均匹配/1/。

3.5、將字符串看作單行例

/a.*bc/s匹配字符串axxxxx\nxxxxbc,但/a.*bc/則不匹配該字符串。

3.6、在模式中忽略空格

/\d{2}([\W])\d{2}\1\d{2}/x等價于/\d{2}([\W])\d{2}\1\d{2}/。

四、Perl模式匹配的附加操作

4.1替換操作符

語法為s/pattern/replacement/,其效果為將字符串中與pattern匹配的部分換成replacement。如:
$string="abc123def";
$string=~s/123/456/;#now$string="abc456def";
在替換部分可使用模式次序變量$n,如s/(\d+)/[$1]/,但在替換部分不支持模式的特殊字符,如{},*,+等,如s/abc/[def]/將把abc替換為[def]。

替換操作符的選項如下表:

g改變模式中的所有匹配
i忽略模式中的大小寫
e替換字符串作為表達式
m將待匹配串視為多行
o僅賦值一次
s將待匹配串視為單行
x忽略模式中的空白

注:e選項把替換部分的字符串看作表達式,在替換之前先計算其值,如:
$string="0abc1";
$string=~s/[a-zA-Z]+/$&x2/e;#now$string="0abcabc1"

4.2翻譯操作符

這是另一種替換方式,語法如:tr/string1/string2/。同樣,string2為替換部分,但其效果是把string1中的第一個字符替換為string2中的第一個字符,把string1中的第二個字符替換為string2中的第二個字符,依此類推。如:
$string="abcdefghicba";
$string=~tr/abc/def/;#nowstring="defdefghifed"
當string1比string2長時,其多余字符替換為string2的最后一個字符;當string1中同一個字符出現多次時,將使用第一個替換字符。

翻譯操作符的選項如下:

c翻譯所有未指定字符
d刪除所有指定字符
s把多個相同的輸出字符縮成一個

如$string=~tr/\d//c;把所有非數字字符替換為空格。$string=~tr\t//d;刪除tab和空格;$string=~tr/0-9//cs;把數字間的其它字符替換為一個空格

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/yc0188/archive/2007/05/28/1628117.aspx

【編輯推薦】

  1. Perl模式匹配選項詳解
  2. 解析Perl模式匹配中有哪些選項
  3. Perl引用中直接引用用法解析
  4. Perl模式匹配經驗總結
  5. 技術分享 解析Perl模塊創建和導入方法
責任編輯:佚名 來源: csdn.net
相關推薦

2010-07-26 10:51:26

Perl模式匹配

2010-07-21 14:18:27

Perl函數

2010-07-15 18:04:20

Perl模式

2010-07-13 12:50:47

Perl變量

2010-07-21 14:08:28

Perl命令行

2010-07-26 11:02:19

Perl模式匹配

2010-07-15 17:58:31

Perl模式

2010-07-26 10:37:00

Perl模式匹配

2010-07-16 09:14:49

Perl模式

2010-07-15 11:29:25

Perl格式化輸出

2010-07-15 10:07:29

Perl指令

2010-07-13 15:43:57

Perl語言

2010-07-19 09:08:38

Perl模塊

2010-07-13 13:15:17

Perl

2010-07-16 12:50:45

Perl語言

2010-07-16 17:38:12

Perl包

2010-07-20 15:18:41

Perl基本語法

2010-07-16 09:24:59

Perl模式

2010-07-13 11:25:42

Perl雙引號

2010-07-14 17:11:57

Perl文件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品一区二区三区 | 俺去俺来也www色官网cms | 天堂在线网 | 看av片网站 | 国产精品一区二区无线 | 亚洲国产成人久久久 | 国产精品国产精品 | 中文字幕亚洲视频 | 日韩免费激情视频 | 一区二区中文 | 欧美日韩久久精品 | 亚洲电影第三页 | 欧美午夜精品理论片a级按摩 | 一级做受毛片免费大片 | 欧美精品区 | 天天色综网| 精品视频在线一区 | 欧美性jizz18性欧美 | 毛片片 | 白浆在线| 天天看天天爽 | 亚洲不卡 | 国产极品车模吞精高潮呻吟 | 久久se精品一区精品二区 | 欧美一级欧美三级在线观看 | av在线一区二区三区 | 亚洲欧美自拍偷拍视频 | 国产乱码精品一区二区三区五月婷 | 亚洲成人一级 | 337p日本欧洲亚洲大胆精蜜臀 | 三级在线观看 | 精品久久久久久久 | 国产成人精品免费视频大全最热 | 亚洲人人 | 99视频在线播放 | 久久精品国产一区老色匹 | 夜夜爽夜夜操 | 福利精品 | 欧美mv日韩mv国产网站91进入 | 国产黄色大片在线观看 | 亚洲午夜精品在线观看 |