Perl 正規表示式

什麼是正規表示式?

Perl 正規表示式是用來匹配語句或語句組中的字串模式。正規表示式主要用於文字解析、模式匹配以及基於更多需求的表示式。我們有一些運算子,它們是由正規表示式專門使用的模式繫結 =~!~,這些是測試和賦值運算子。

正規表示式運算子

[^ ]*?@[^ ]*?\.[^ ]*
  • Perl 匹配 - m/.../
  • Perl 替換 - s/.../.../
  • Perl 轉寫 - tr/.../.../

在進一步研究之前,我們需要了解正規表示式的一些內容,在 Perl Regex 語法中有一些像元字元,萬用字元這樣的東西。

字元 意義
\ 特價或報價
* 匹配 0 個或更多字元
+ 匹配 1 個或更多字元
? 匹配 0 或 1 個字元
| 用來匹配不同的模式
() 用於儲存匹配的模式
[] 可以傳遞一組字元。專門用於數字和字母。
{} 用於提供可以執行匹配的時間。
^ 字串的開頭
$ 字串結束
\w 用於匹配單個字元或單詞,可以是字母數字,包括 _
\W 匹配除字母數字以外的任何內容
\s 用於匹配空格
\S 匹配除空格以外的任何內容
\d 匹配數字。不是十進位制值和負值
\D 匹配數字以外的任何內容。
\t 匹配選項卡空間
\n 匹配換行符

以上是在模式匹配時可以使用的字符集。

讓我們看幾個例子。

比如使用者在指令碼執行期間提供一些輸入的情況,我們想檢查使用者是否輸入了某個名稱作為輸入。我們必須編寫正規表示式語法來提取名稱並將它列印出來。

my $userinput="Tastones Rocks";

if($userinput=~m/.*(Tastones).*/)

{

    print "Found Pattern";

}

else

{

    print "unable to find the pattern";

}

輸出:

Found Pattern

在這裡,我們將正規表示式編寫為 /.*(Tastones).*/.* 匹配字串中的所有字元。. 在 Perl 正規表示式匹配中指的是包括空格在內的任何字元。

讓我們看看我們如何構建一個正規表示式。

考慮一個包含多個單詞和數字的字串以及特殊符號的示例,例如 Hello every this this is my number:+ 001-99298373639;

正規表示式:/^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i

Perl 匹配運算子

匹配運算子用於匹配某些語句或變數中的字串。

my $var="Hello this is perl";

if($var=~m/perl/)

{

    print "True"; 

} 

else

{

    print "False"; 

}

輸出:

True

這段程式碼將列印 True,因為 Perl 模式匹配標識變數中的字串。基本上,Perl 會在整個字串中搜尋文字,即使它在一個地方找到它也會返回 True。模式可以在變數中的任何位置。我們可以試著用 !~ 替換 =~ 來檢視這兩個運算子之間的區別。

Perl 替換運算子

此運算子可用於搜尋和替換字元。

my $a="Hello how are you";

$a=~s/hello/cello/gi;

print $a;

輸出:

cello how are you

注意:我們實際上可以使用任何模式匹配字串,就像我們之前在替換運算子中所做的那樣。這裡我們用 gi,其中 g-全域性,i-忽略大小寫。

Perl 轉寫操作符

這類似於替換,但它不使用任何 Perl 正規表示式,而是我們可以直接傳遞我們想要替換的值或單詞。

my $a="Hello how are you";

$a=~tr/hello/cello/;

print $a;

輸出:

Hello cello are you