自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Perl文字處理模式(regularexpresion)相關(guān)的運算符及函數(shù)

開發(fā) 架構(gòu)
Perl語言有很多值得學(xué)習(xí)的地方,這里向大家簡單介紹一下Perl文字處理模式(regularexpresion)相關(guān)的運算符及函數(shù),希望對大家學(xué)習(xí)有所幫助。

本文和大家重點討論一下Perl文字處理模式(regularexpresion)相關(guān)的運算符及函數(shù),在Perl程序?qū)懽髦谐玫?~和!~這兩個運算符及s和t這二個函數(shù)來和文字處理模式/pattern/搭配,至于如何搭配請看本文詳細(xì)介紹。

Perl文字處理模式(regularexpresion)相關(guān)的運算符及函數(shù)

在Perl程序?qū)懽髦谐玫?~和!~這兩個運算符及s和t這二個函數(shù)來和文字處理模式/pattern/搭配,而成一個運算式,如果能夠活用這些Perl指令的話,就可以很輕易地來處理一些字符串,當(dāng)然在cgi程序設(shè)計中了就更能得心應(yīng)手了?,F(xiàn)在就讓作者來介紹這些運算符及函數(shù)的用法:

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

Perl指令:/pattern/文字運算

說明:如果在文字運算中沒有使用=~或是!~運算符指定一個字符串來做運算的話,就會使用內(nèi)定的輸出變量$_來做/pattern/文字運算。

范例一:

$string="chmod711cgi";
$string=~/(\w)\s+(\d+)/;

第一個(\w+)是********數(shù)個字母,并將的找到的字符串指派給$1這個變量,而\s+********多個空白的字符串,最后(\d+)********個數(shù)值,并將所找到的字符串指派給$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指令:=~相配運算符

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

范例:

print"請輸入一個字符串!\n";
$string=<stdin>#<stidn>********輸入,會讓使用者輸入一字符串
chop($string);#將$string最后一個換行的字符\n刪除掉
if($string=~/cgi/){

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

}

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

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

Perl指令:!~不相配運算符

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

范例:

print"請輸入一個字符串!\n";
$string=<stdin>#<stidn>********輸入,會讓使用者輸入一字符串
chop($string);#將$string最后一個換行的字符\n刪除掉
if($string!~/cgi/)
{

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

}

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

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

Perl指令:tr轉(zhuǎn)換函數(shù)

語法:tr/searchlist/replacelist/

其中searchlist是要轉(zhuǎn)換的字符;replacelist是轉(zhuǎn)換成何種字符。

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

范例一:

$string="testing";
$string=~tr/et/et/";#此時$string="testing";
$string=~tr/a-z/a-z/;#此時$stirng="testing";

范例二:

$string="cgi+Perl";
$string=~tr/+//;#此時$string="cgiPerl";

在傳送cgi數(shù)據(jù)的時候會先將數(shù)據(jù)編碼,其中會將空白的字符轉(zhuǎn)成+這個字符。

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

Perl指令:s取代函數(shù)

語法:s/pattern/replace/eg

其中pattern是文字處理(regularexpresion)的模式;
replace是代表取代成何種文字模式。
而g是這個函數(shù)最常用的參數(shù),********所有符合文字模式的字符串全部取代,如果省略這個參數(shù)的話,則只取代一個符合文字模式的字符串中;
而加上e這個參數(shù)代表要將replace的部分當(dāng)成一個運算式,如果沒有這個需要的話,就不用加上這個參數(shù)了。
說明:將符合文字處理模式的字符串取成為要取代的字符串

Perl范例一:

$string="i:love:Perl";
$string=~s/:/*/;#此時$string="i*love:Perl";
$string=~s/:/*/g;#此時$string="i*love*Perl";
$string=~s/*/+/g;#此時$string="i+love+Perl";
$string=~s/+//g;#此時$string="ilovePerl";

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

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

Perl范例二:

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

第一個()內(nèi)所找到的字符串變成$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+)********符合一個或是多個英文字符或是數(shù)值的字符串,之后再將找到的字符串設(shè)成$1。因為加上g這個參數(shù),所以會找到字符串的這三個英文單字,然后再把這三個單字分加上<>這個符號,此時$string="<Perl><love><i>";

Perl范例三:

$string="www22cgi44";
$string=~s/(\d+)/$1*2/e;

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

$string="www22cgi44";
$string=~s/(\d+)/$1*2/eg;

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

Perl范例四:

假設(shè)原本的字符串是$value="三八!",經(jīng)cgi數(shù)據(jù)編碼之后,這個字符串就會變成

$value="%a4t%a4k%21"。以下是一個解碼的示范程序:

$value="%a4t%a4k%21";
$vlaue=~s/%([a-fa-f0-9][a-fa-f0-9]/pack("c",hex($1))/eg;

在傳送cgi數(shù)據(jù)的時候會把數(shù)據(jù)編碼,其中會將特殊字符或是中文字符編碼以%開頭的連續(xù)的兩個十六進(jìn)制數(shù)的字符串,所以要用s這個函數(shù)來找尋這個以%開頭的字符串。為了要把找到的字符串再做解碼的處理,所以要在%這個符號之后加上()這個符號,表示會把找到的字符串記憶起來并指定給$1這個變量,而且要在()中加上********續(xù)兩個十六進(jìn)制數(shù)值的文字處理模式(regularexpression),也就是[a-fa-f0-9][a-fa-f0-9]。再用hex這個函數(shù)($1是********的字符串)把十六進(jìn)制數(shù)值轉(zhuǎn)成十進(jìn)制的碼,之后再用pack這個函數(shù)(以c為參數(shù),是********gnedcharvalue的意思)把這個十進(jìn)制碼還原成原來的字符串。最后就會把這個字符串解碼成$value="三八!"。值得一提的是也可以把這個解碼的程序?qū)懗?

$value=~s/%(..)/pack("c",hex($1))/eg;
 

【編輯推薦】

  1. Perl 字符匹配實例解說
  2. Perl文件句柄概念詳解
  3. Perl二維數(shù)組用法全程剖析
  4. 暢談Perl操作符用法
  5. Perl轉(zhuǎn)義字符用法解析

 

 

責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2019-10-12 15:42:36

CSS代碼前端

2022-06-10 12:17:04

開源軟件Linux文字處理程序

2009-02-23 20:47:16

Fedora 10文字處理辦公軟件

2013-09-02 12:46:55

Quip企業(yè)級移動

2010-07-20 14:52:51

Perl語法

2010-07-14 17:43:25

Perl運算符

2025-02-24 11:16:20

2010-07-14 17:36:00

Perl運算符

2009-08-11 15:51:08

C#運算符算術(shù)運算符

2023-04-10 08:58:13

C#關(guān)系運算符

2009-08-12 15:02:49

C#賦值運算符簡單賦值運算符

2009-08-12 15:20:18

C#賦值運算符復(fù)合賦值運算符

2010-02-03 15:40:11

C++地址運算符

2009-11-26 11:12:07

PHP運算符

2009-08-12 10:20:52

C#位運算符

2019-10-09 14:23:59

Python運算符代碼

2010-05-20 13:56:49

MySQL運算符

2024-02-26 15:17:20

2009-08-12 09:30:10

C#??運算符

2016-10-14 14:04:34

JAVA語法main
點贊
收藏

51CTO技術(shù)棧公眾號