正則表達式功能強大,能在海量文本中精準提取信息。但基礎正則對複雜場景往往力不從心,掌握高級技巧至關重要。本文精選 8 大核心概念,配合實戰案例解析,助你駕馭複雜文本處理需求。(閱讀前建議具備正則基礎知識)
所有可重複的量詞(*、+、{n,})默認都是貪婪的——盡可能多匹配字符。
// 文本
<h1>這是一個標題。</h1>
<h1>這是另一個。</h1>
// 正則:/<h1>.*<\/h1>/
// 匹配結果:整段文本(包含中間的閉合標簽)
.* 貪婪匹配了從第一個 <h1> 到最後一個 </h1> 的所有內容。
在量詞後添加 ? 或使用 U 修飾符啟用懶惰模式——盡可能少匹配字符。
// 正則:/<h1>.*?<\/h1>/
// 匹配結果:<h1>這是一個標題。</h1>(僅第一個)
{n,}? 懶惰重複$str = 'hihihi oops hi';
// 貪婪 {2,}:匹配盡可能多
preg_match('/(hi){2,}/', $str, $m); // $m[0] = 'hihihi'
// 懶惰 {2,}?:匹配最少滿足條件
preg_match('/(hi){2,}?/', $str, $m); // $m[0] = 'hihi'
理解貪婪與懶惰的區別,是掌握高級正則的基石。
(篇幅所限,本文展示核心技巧 1。完整 8 大技巧包含:反向引用、零寬斷言、條件匹配、遞歸模式、具名捕獲、原子組、性能優化、常見陷阱規避,請參考完整版文檔。)