Perl 中的匹配運算子
Perl 中的匹配運算子 m// 用於將字串或語句與正則表示式匹配。例如,要將字元序列“foo”與標量 $bar 匹配,可以使用如下語句:
示例
#!/usr/bin/perl
$bar = "This is foo and again foo";
if ($bar =~ /foo/) {
print "First time is matching\n";
} else {
print "First time is not matching\n";
}
$bar = "foo";
if ($bar =~ /foo/) {
print "Second time is matching\n";
} else {
print "Second time is not matching\n";
}執行上述程式時,會產生以下結果:
First time is matching Second time is matching
m// 的工作方式實際上與 q// 運算子系列相同。您可以使用任何自然匹配字元的組合作為表示式的分隔符。例如,m{}、m() 和 m>< 都是有效的。因此,上述示例可以改寫如下:
#!/usr/bin/perl
$bar = "This is foo and again foo";
if ($bar =~ m[foo]) {
print "First time is matching\n";
} else {
print "First time is not matching\n";
}
$bar = "foo";
if ($bar =~ m{foo}) {
print "Second time is matching\n";
} else {
print "Second time is not matching\n";
}如果分隔符是正斜槓,則可以省略 m,但對於所有其他分隔符,必須使用 m 字首。
請注意,整個匹配表示式(即 =~ 或 !~ 左側的表示式和匹配運算子)在標量上下文中返回 true(如果表示式匹配)。因此,語句:
$true = ($foo =~ m/foo/);
如果 $foo 與正則表示式匹配,則將 $true 設定為 1,否則如果匹配失敗則設定為 0。在列表上下文中,匹配返回任何分組表示式的內容。例如,在從時間字串中提取小時、分鐘和秒時,我們可以使用:
my ($hours, $minutes, $seconds) = ($time =~ m/(\d+):(\d+):(\d+)/);
Perl 中的匹配運算子修飾符
Perl 匹配運算子支援其自身的一組修飾符。/g 修飾符允許全域性匹配。/i 修飾符將使匹配不區分大小寫。以下是修飾符的完整列表
| 序號 | 修飾符和描述 |
|---|---|
| 1 | i 使匹配不區分大小寫。 |
| 2 | m 指定如果字串包含換行符或回車符,則 ^ 和 $ 運算子將匹配換行符邊界,而不是字串邊界。 |
| 3 | o 僅評估一次表示式。 |
| 4 | s 允許使用 . 匹配換行符。 |
| 5 | x 允許您在表示式中使用空格以提高畫質晰度。 |
| 6 | g 全域性查詢所有匹配項。 |
| 7 | cg 如果檔案已存在則停止 |
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP