Perl 正則表達式 - W3big

文章推薦指數: 80 %
投票人數:10人

正則表達式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。

w3big.com Latestwebdevelopmenttutorials ☰ HTML CSS JAVASCRIPT SQL PHP BOOTSTRAP JQUERY ANGULAR XML PYTHON 简体中文繁體中文日本语한국어ไทยالعربيةPortuguêsIndonesiaEspañolItalianoDeutschFrançaisPусскийpolskiEnglish × × × × Perl教程 Perl教程 Perl簡介 Perl環境安裝 Perl基礎語法 Perl數據類型 Perl變量 Perl標量 Perl數組 Perl哈希 Perl條件語句 Perl循環 Perl運算符 Perl時間日期 Perl子程序(函數) Perl引用 Perl格式化輸出 Perl文件操作 Perl目錄操作 Perl錯誤處理 Perl特殊變量 Perl正則表達式 Perl發送郵件 PerlSocket編程 Perl面向對象 Perl數據庫連接 PerlCGI編程 Perl包和模塊 Perl進程管理 PerlPOD文檔 Perl正則表達式 上一頁:Perl特殊變量下一頁:Perl發送郵件正則表達式(regularexpression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。

Perl語言的正則表達式功能非常強大,基本上是常用語言中最強大的,很多語言設計正則式支持的時候都參考Perl的正則表達式。

Perl的正則表達式的三種形式,分別是匹配,替換和轉化:匹配:m//(還可以簡寫為//,略去m)替換:s///轉化:tr///這三種形式一般都和=~或!~搭配使用,=~表示相匹配,!~表示不匹配。

匹配操作符匹配操作符m//用於匹配一個字符串語句或者一個正則表達式,例如,要匹配標量$bar中的"run",代碼如下所示:#!/usr/bin/perl $bar="Iamw3bigsite.welcometow3bigsite."; if($bar=~/run/){ print"第一次匹配\n"; }else{ print"第一次不匹配\n"; } $bar="run"; if($bar=~/run/){ print"第二次匹配\n"; }else{ print"第二次不匹配\n"; } 執行以上程序,輸出結果為:第一次匹配 第二次匹配 模式匹配修飾符模式匹配有一些常用的修飾符,如下表所示:修飾符描述i忽略模式中的大小寫m多行模式o僅賦值一次s單行模式,"."匹配"\n"(默認不匹配)x忽略模式中的空白g全局匹配cg全局匹配失敗後,允許再次查找匹配串正則表達式變量perl處理完後會給匹配到的值存在三個特殊變量名:$`:匹配部分的前一部分字符串$&:匹配的字符串$':還沒有匹配的剩餘字符串如果將這三個變量放在一起,你將得到原始字符串。

實例如下:#!/usr/bin/perl $string="welcometow3bigsite."; $string=~m/run/; print"匹配前的字符串:$`\n"; print"匹配的字符串:$&\n"; print"匹配后的字符串:$'\n"; 執行以上程序輸出結果為:匹配前的字符串:welcometo 匹配的字符串:run 匹配后的字符串:oobsite. 替換操作符替換操作符s///是匹配操作符的擴展,使用新的字符串替換指定的字符串。

基本格式如下:s/PATTERN/REPLACEMENT/; PATTERN為匹配模式,REPLACEMENT為替換的字符串。

例如我們將以下字符串的"google"替換為"w3big":#!/usr/bin/perl $string="welcometogooglesite."; $string=~s/google/w3big/; print"$string\n"; 執行以上程序輸出結果為:welcometow3bigsite. 替換操作修飾符替換操作修飾符如下表所示:修飾符描述i如果在修飾符中加上"i",則正則將會取消大小寫敏感性,即"a"和"A"是一樣的。

m默認的正則開始"^"和結束"$"只是對於正則字符串如果在修飾符中加上"m",那麼開始和結束將會指字符串的每一行:每一行的開頭就是"^",結尾就是"$"。

o表達式只執行一次。

s如果在修飾符中加入"s",那麼默認的"."代表除了換行符以外的任何字符將會變成任意字符,也就是包括換行符!x如果加上該修飾符,表達式中的空白字符將會被忽略,除非它已經被轉義。

g替換所有匹配的字符串。

e替換字符串作為表達式轉化操作符以下是轉化操作符相關的修飾符:修飾符描述c轉化所有未指定字符d刪除所有指定字符s把多個相同的輸出字符縮成一個以下實例將變量$string中的所有小寫字母轉化為大寫字母:#!/usr/bin/perl $string='welcometow3bigsite.'; $string=~tr/a-z/A-z/; print"$string\n"; 執行以上程序輸出結果為:WELCOMETOw3bigSITE. 以下實例使用/s將變量$string重複的字符刪除:#!/usr/bin/perl $string='w3big'; $string=~tr/a-z/a-z/s; print"$string\n"; 執行以上程序輸出結果為:runob 更多實例:$string=~tr/\d//c;#把所有非数字字符替换为空格 $string=~tr/\t//d;#删除tab和空格 $string=~tr/0-9//cs#把数字间的其它字符替换为一个空格。

更多正則表達式規則表達式描述.匹配除換行符以外的所有字符x?匹配0次或一次x字符串x*匹配0次或多次x字符串,但匹配可能的最少次數x+匹配1次或多次x字符串,但匹配可能的最少次數.*匹配0次或多次的任何字符.+匹配1次或多次的任何字符{m}匹配剛好是m個的指定字符串{m,n}匹配在m個以上n個以下的指定字符串{m,}匹配m個以上的指定字符串[]匹配符合[]內的字符[^]匹配不符合[]內的字符[0-9]匹配所有數字字符[az]匹配所有小寫字母字符[^0-9]匹配所有非數字字符[^az]匹配所有非小寫字母字符^匹配字符開頭的字符$匹配字符結尾的字符\d匹配一個數字的字符,和[0-9]語法一樣\d+匹配多個數字字符串,和[0-9]+語法一樣\D非數字,其他同\d\D+非數字,其他同\d+\w英文字母或數字的字符串,和[a-zA-Z0-9]語法一樣\w+和[a-zA-Z0-9]+語法一樣\W非英文字母或數字的字符串,和[^a-zA-Z0-9]語法一樣\W+和[^a-zA-Z0-9]+語法一樣\s空格,和[\n\t\r\f]語法一樣\s+和[\n\t\r\f]+一樣\S非空格,和[^\n\t\r\f]語法一樣\S+和[^\n\t\r\f]+語法一樣\b匹配以英文字母,數字為邊界的字符串\B匹配不以英文字母,數值為邊界的字符串a|b|c匹配符合a字符或是b字符或是c字符的字符串abc匹配含有abc的字符串(pattern)()這個符號會記住所找尋到的字符串,是一個很實用的語法.第一個()內所找到的字符串變成$1這個變量或是\1變量,第二個()內所找到的字符串變成$2這個變量或是\2變量,以此類推下去./pattern/ii這個參數表示忽略英文大小寫,也就是在匹配字符串的時候,不考慮英文的大小寫問題.\如果要在pattern模式中找尋一個特殊字符,如"*",則要在這個字符前加上\符號,這樣才會讓特殊字符失效上一頁:Perl特殊變量下一頁:Perl發送郵件



請為這篇文章評分?