Perl 網頁程式設計課程目錄

Perl Regular Expression 正規運算(一)

正規運算 (Regular Expression) 在 Perl 程式設計是非常重要的, 要寫出實用 Perl 程式, 非要學好正規運算.

為了尋找某一組字串, 我們便需要使用正規運算.

Perl 的正規運算格式是 :

變 數 =~ /尋 找 字 串/

例如 :

$name =~ /alex/

如 alex 這組字串是在 $name 之內, 運算便是 "True" 了.

通常描述都是比較難明白的, 還是做例子吧 :

編寫及在瀏覽器執行以下 Perl 程式 :

#!/usr/bin/perl
print "Content-type: text/html\n\n";
#
#
$name = "alex";
#
#
### Regular Expression #######
#
if ($name =~ /alex/) {
  print "Hello, Have a cup of tea.";
} else {
  print "Good Bye.";
}

Perl 程式解釋如下:

第 10 行 : if ($name =~ /alex/)

如 alex 這組字串是在 $name 之內, 運算便是 "True" 了.

在這例子中, 因 為 alex 這組字串是在 $name 之內, 所以運算是 "True" 的.

因此, 瀏覽器應出現 :

Hello, Have a cup of tea.

View Example

更改以上 Perl 程式 $name 的變數, 如下例 :

#!/usr/bin/perl
print "Content-type: text/html\n\n";
#
#
$name = "I am alex wu";
#
#
### Regular Expression #######
#
if ($name =~ /alex/) {
  print "Hello, Have a cup of tea.";
} else {
  print "Good Bye.";
}

Perl 程式解釋如下:

第 10 行 : if ($name =~ /alex/)

在這Perl 程式例子中, 因為 alex 這組字串一樣是在 $name 之內, 所以運算亦是 "True" 的.

因此, 瀏覽器一樣出現 :

Hello, Have a cup of tea.

View Example

更改以上 Perl 程式正規運算的尋找字串, 如下例 :

#!/usr/bin/perl
print "Content-type: text/html\n\n";
#
#
$name = "I am alex wu";
#
#
### Regular Expression #######
#
if ($name =~ /Alex/) {
  print "Hello, Have a cup of tea.";
} else {
  print "Good Bye.";
}

Perl 程式解釋如下:

第 10 行 : if ($name =~ /Alex/)

在這 Perl 程式例子中, 因為 Alex 的 "A" 是大楷 (upper case), 所以尋找字串 Alex 這組字串不是在 $name 之內.

所以運算是 "False" 的.

因此, 瀏覽器會出現 :

Good Bye.

View Example

如想正規運算的尋找字串不理會字母的大楷或小楷, 可以更改正規運算的尋找方式. 如下例:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
#
#
$name = "I am alex wu";
#
#
### Regular Expression #######
#
if ($name =~ /Alex/i) {
  print "Hello, Have a cup of tea.";
} else {
  print "Good Bye.";
}

Perl 程式解釋如下:

第 10 行 : if ($name =~ /Alex/i)

有 了 這 個 "/i", 即表示尋找字串 Alex 是不理會字母的大楷或小楷. (i 即是 case-insensitivity)

所以運算是 "True" 的.

因此, 瀏覽器會出現 :

Hello, Have a cup of tea.

View Example

注 意 : 在 這 例 子 中, 如 更 改 尋 找 字 串, 例 如 :

$name =~ /ALex/i
$name =~ /AlEx/i
$name =~ /ALEX/i

運 算 都 是 "True" 的.