Perl 的組匹配
從 Perl 中的正則表示式角度來看,除了前者更清晰以外,以下兩個表示式之間沒有區別。
$string =~ /(\S+)\s+(\S+)/; and $string =~ /\S+\s+\S+/;
然而,分組的優點是可以讓我們從正則表示式中提取一個序列。分組以其在原始表示式中的出現順序作為列表返回。例如,在下例中,我們已經從字串中提取出小時、分鐘和秒。
my ($hours, $minutes, $seconds) = ($time =~ m/(\d+):(\d+):(\d+)/);
除了這種直接方法以外,匹配到的分組還可以透過特殊的 $x 變數獲得,其中 x 是正則表示式中分組的編號。因此,我們可以按如下方式重寫前面的示例 −
示例
#!/usr/bin/perl $time = "12:05:30"; $time =~ m/(\d+):(\d+):(\d+)/; my ($hours, $minutes, $seconds) = ($1, $2, $3); print "Hours : $hours, Minutes: $minutes, Second: $seconds\n";
當執行以上的程式碼段時,會輸出以下結果 −
Hours : 12, Minutes: 05, Second: 30
當在替換表示式中使用分組時,可以在替換文字中使用 $x 語法。因此,我們可以使用以下方式重新格式化日期字串 −
示例
#!/usr/bin/perl $date = '03/26/1999'; $date =~ s#(\d+)/(\d+)/(\d+)#$3/$1/$2#; print "$date\n";
當執行以上的程式碼段時,會輸出以下結果 −
1999/03/26
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP