首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Perl 正規表達式入門:從基本匹配到進階替換完整教學

     編輯:PHP 綜合知識

Perl 以強大的正規表達式(Regex)聞名,是文本處理首選語言。本文循序漸進介紹 Perl Regex 核心語法,涵蓋匹配、錨點、字符類、選擇分支與分組,並提供實戰範例。

基本匹配運算子 =~ m//

$string =~ m/text/    # 字串包含 "text" 時為真
$string =~ m/.ext/    # 任意字元 + "ext" → 匹配 "text", "next"
$string =~ m/^.ext/   # 開頭任意字元 + "ext" → 匹配 "text",不匹配 "context"
$string =~ m/.ext$/   # 結尾 "ext" → 匹配 "context",不匹配 "dextrous"
$string =~ m/^.ext$/  # 完整匹配 4 字元且以 "ext" 結尾

字符類 [] 與否定 [^]

$string =~ m/^[tT]ext$/     # 僅匹配 "text" 或 "Text"
$string =~ m/[aeiouAEIOU]/  # 含任一母音
$string =~ m/[^aeiouAEIOU]/ # 非母音(輔音/標點/數字等)
$string =~ m/[a-z]/         # 任一小寫字母(範圍寫法)

選擇分支 | 與分組 ()

$string =~ m/next|previous/           # 包含 "next" 或 "previous"
$string =~ m/^(next|previous)/        # 開頭為 "next" 或 "previous"
$string =~ m/^(?:next|previous)/      # 非捕獲分組 (?:) 效能稍佳

量詞與貪婪/非貪婪模式

量詞含義範例
*0 次或以上ab*c 匹配 "ac", "abc", "abbc"...
+1 次或以上ab+c 匹配 "abc", "abbc"...
?0 次或 1 次ab?c 匹配 "ac", "abc"
{n,m}n 到 m 次a{2,4} 匹配 "aa", "aaa", "aaaa"
*?, +?非貪婪(最少匹配)a.*?b 在 "a x b y b" 匹配 "a x b"

實用範例:Email 簡易驗證

my $email_regex = qr/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
if ($input =~ $email_regex) { print "Valid\n"; }

修飾符

  • i:大小寫不敏感 m/pattern/i
  • m:多行模式,^/$ 匹配行首尾
  • s:單行模式,. 匹配換行符
  • x:擴展模式,忽略空白並允許註解
  • g:全域匹配(搭配 while ($str =~ /pattern/g))

Perl vs PCRE (PHP) 差異提醒

  • Perl 原生支援 \N{NAME} Unicode 命名字符,PCRE 需 \x{...}。
  • Perl qr// 編譯正規物件,PHP 用 preg_quote() 或直接字串。
  • PHP preg_* 函數語法與 Perl 高度相容(PCRE 库)。

掌握 Perl Regex 核心語法,即能在 PHP、Python、JavaScript 等支援 PCRE 的語言中舉一反三,高效解決文本解析、驗證與轉換問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved