麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Perl > 正文

Perl常規表達式(2)

2019-11-18 17:24:00
字體:
來源:轉載
供稿:網友

三常規表達式(RegularEx
  $string=~/(/W)/s (/d )/;

  第一個(/W )是代表找尋數個字母,并將的找到的字符串指派給$1這個變量,而/s 代表找尋多個空白的字符串,最后(/d )代表找尋個數值,并將所找到的字符串指派給$2這個變量。所以

$1="chmod";$2=711;但是$string還是等于原來的字符串,沒有改變。

  范例二:

  $_="chmod711cgi";

  /(/W)/s (/d )/;

  因為是把字符串指定給$_這個變量,所以可以不用=~這個運算符就會得到

  $1="chmod";$2=711;而且$_還是等于原來的字符串,沒有改變。

  范例三:

  $string="chmod711cgi";

  @list=split(/s /,$string);

  以上一個或是多個空白字符來分割$string這個字符串,這是一個很常用的語法。此時@list=("chmod","711","cgi");

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

  指令:=~相配運算符

  說明:這是Perl語言中特有的語法,通常會和文字處理來作運算。

  范例:

  print"請輸入一個字符串!/n";

  $string=<STDIN>;#<STIDN>代表標準輸入,會讓使用者輸入一字符串

  chop($string);#將$string最后一個換行的字符/n刪除掉

  if($string=~/cgi/){

  print("輸入的字符串中有cgi這個字符串!/n";

  }

  如果輸入的字符串含有cgi這個字符串的話,就會顯示出這個信息。

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

  指令:!~不相配運算符

  說明:這也是Perl語言中特有的語法,通常會和常規表達式來運算。

  范例:

  print"請輸入一個字符串!/n";

  $string=<STDIN>;#<STIDN>代表標準輸入,會讓使用者輸入一字符串

  chop($string);#將$string最后一個換行的字符/n刪除掉

  if($string!~/cgi/)

  {

  print("輸入的字符串中有cgi這個字符串!/n";

  }

  如果輸入的字符串中沒有cgi這個字符串的話,就會顯示出這個信息。

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

  指令:tr轉換函數

  語法:tr/SEARCHLIST/REPLACELIST/

  其中SEARCHLIST是要轉換的字符;REPLACELIST是轉換成何種字符。

  說明:tr(translate)就是轉換的意思,會把符合轉換的字符轉換成要轉換的字符。

  范例一:

  $string="testing";

  $string=~tr/et/ET/";#此時$string="TEsTing";

  $string=~tr/a-z/A-Z/;#此時$stirng="TESTING";

  范例二:

  $string="CGI Perl";

  $string=~tr/ //;#此時$string="CG

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

  指令:s取代函數

  語法:s/PATTERN/REPLACE/eg

  其中

  PATTERN是文字處理(RegularExpresion)的模式;

  REPLACE是代表取代成何種文字模式。

  而g是這個函數最常用的參數,代表要把所有符合文字模式的字符串全部取代,如果省略這個參數的話,則只取代一個符合文字模式的字符串中;

  而加上e這個參數代表要將REPLACE的部分當成一個運算式,如果沒有這個需要的話,就不用加上這個參數了。說明:將符合常規表達式的字符串取成為要取代的字符串

  范例一:

  $string="i:love:perl";

ring="i*love*perl";

  $string=~s/*/ /g;#此時$string="i love perl";

  $string=~s/ //g;#此時$string="iloveperl";

  上一行也可寫成$string=~tr/ //;效果都會一樣哦!

  $string=~s/perl/cgi;#此時$string="ilovecgi";

  范例二:

  $string=~s/(love)/<$1>/;

  第一個()內所找到的字符串變成$1,在這個范例中,會把變量love這個字符串變成<love>,此時$string="i<love>perl";

  $string="iloveperl";

  $string=~s(i)(perl)/<$1><$2>/;

  在這個范例中,會把i變成<i>;perl變成<perl>,此時$string="<perl>love<i>";  $string="iloveperl";

  $string=~s(/W )/<$1>/g;

  (/w )代表找尋符合一個或是多個英文字符或是數值的字符串,之后再將找到的字符串設成$1。因為加上g這個參數,所以會找到字符串的這三個英文單字,然后再把這三個單字分加上<>這個符號,此時$string="<perl><love><i>";

  范例三:

  $string="www22cgi44";

  $string=~s/(/d )/$1*2/e;

  (/d )代表要找尋$string中一個或是多個數值的字符串,再將找到的字符串設成$1。加上參數e是代表要把$1*2當作是一個運算式,所以$string="www22cgi44";

  $string="www22cgi44";

  $string=~s/(/d )/$1*2/eg;

  加上參數e,所以會把$1*2當作是一個運算符式來看;加上參數g就會把全部符合數值的字符串經過運算式運算之后再把它取代,所以$string="www44cgi88";

  范例四:

  假設原本的字符串是$value="三八!",經CGI數據編碼之后,這個字符串就會變成

  $value="!"。以下是一個解碼的示范程序:

  $value="!";

  $vlaue=~s/(〔a-fA-F0-9〕

〔a-fA-F0-9〕/pack("c",hex($1))/eg;

  在傳送CGI數據的時候會把數據編碼,其中會將特殊字符或是中文字符編碼以開頭的連續的兩個十六進制數的字符串,所以要用s這個函數來找尋這個以開頭的字符串。為了要把找到的字符串再做解碼的處理,所以要在這個符號之后加上()這個符號,表示會把找到的字符串記憶起來并指定給$1這個變量,而且要在()中加上代表是連續兩個十六進制數值的常規表達式(RegularExpression),也就是〔a-fA-F0-9〕〔a-fA-F0-9〕。再用hex這個函數($1是代表符合的字符串)把十六進制數值轉成十進制的碼,之后再用pack這個函數(以C為參數,是代表unsignedcharvalue的意思)把這個十進制碼還原成原來的字符串。最后就會把這個字符串解碼成$value="三八!"。值得一提的是也可以把這個解碼的程序寫成:  $value=~s/(..)/pack("C",hex($1))/eg;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 免费观看一区二区三区 | 亚洲片在线 | 久久精品中文字幕一区二区三区 | 最新黄色av | 国产精品成人久久 | 性爱网站 | 日韩欧美激情视频 | 日韩黄色三级视频 | 欧美激情性色生活片在线观看 | 成人免费自拍视频 | 最新黄色av | 污片视频网站 | 久久精品性视频 | 精品国产看高清国产毛片 | 国产免费观看电影网站 | 久久精品日本一区 | 久久人人人| 一区二区三区欧洲 | 斗破苍穹在线免费 | 天堂二区| 国产精品久久久久久久久久10秀 | 一级做a爱片性色毛片高清 日本一区二区在线看 | 国产三级在线视频观看 | 蜜桃网在线 | 一级毛片在线免费播放 | 久久久噜噜噜久久熟有声小说 | 日韩毛片免费观看 | 久色porn| 成人午夜一区二区 | 九一免费在线观看 | 杏美月av| 欧美三级一级 | 2019天天干夜夜操 | 亚洲视屏在线观看 | 国产日本欧美在线观看 | 久久国产精品区 | 欧美一级淫片a免费播放口 91九色蝌蚪国产 | av在线高清观看 | 欧美不卡 | 一区二区三高清 | 日日鲁夜夜视频热线播放 |