Perl 正則表達式 - W3big
文章推薦指數: 80 %
正則表達式(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發送郵件
延伸文章資訊
- 1精簡扼要的Perl 課程講義(六):常規表達式(Regular ...
常規表達式(一) (Regular expression) # (1) 基本樣式比對"=~" 與"!~" # 比對字串,成功傳回true # 失敗傳回false "Hello World" =~...
- 2Perl正則表示式超詳細教程 - ITREAD01.COM - 程式入門教學
想必學習perl的人,對基礎正則表示式都已經熟悉,所以學習perl正則會很輕鬆。這裡我不打算解釋基礎正則的內容,而是直接介紹基礎正則中不具備的但perl支援 ...
- 3PERL 正規表達式會用到的符號 - 精讚
自動目錄. PERL 正規表達式(Regular Expression, Regex)會用到的符號; 各種字元; 重覆; 控制字元; 字元集(群組)或特殊字元 ...
- 4Perl 常用的regexp 規則列表 - 朝陽科技大學
- 5Perl Regular Expression(正規表示式) - Totui - 痞客邦
Regular Expression通常是用來尋找"特定的字串樣式(pattern)",也就是所謂"格式辨認(pattern-matching)"的功能。 他的運算子是=~ (唸成match) 和!~