搜尋
首頁常見問題新手入門學習正規表示式的常見錯誤

新手入門學習正規表示式的常見錯誤

Nov 09, 2019 pm 05:42 PM
常見錯誤正規則

正規的好處就是易於上手,透過幾個小時的學習,大部分的正則就都可以看的懂了,雖然看得懂,但在實踐的過程中還是會遇到很多得不到自己想要結果的情況,畢竟正規的語法還是有些奇怪,本文就整理了一些關於在正規學習過程中常會犯的錯誤。

新手入門學習正規表示式的常見錯誤

正規表示式

#一、空格

我們在平常寫程式碼的時候,空格通常是用來是讓程式碼更規範的工具,連同適當的縮排,行首的tab一起,讓程式碼看起來更為清晰。但在正則中可要小心了-空格本身也屬於一個要匹配的字符,不恰當的使用空格的話:

echo preg_match('/a{1, 3}/', "aaa") ? '匹配' : '不匹配';  // 不匹配

如上面這個正則,本意是匹配1~3個a,但實際上並不會配對到後面的3個a,因為{1, 3}中間多了一個空格,使得元字元「{}」的本意失效而變成了普通字元:

echo preg_match('/a{1, 3}/', "a{1, 3}") ? '匹配' : '不匹配';  // 匹配

「a {1, 3}」這個字串反而匹配上了,這顯然不是我們想要的,所以一定要注意,除非匹配的是空格字符本身,否則空格不要用:

echo preg_match('/a{1,3}/', "aaa") ? '匹配' : '不匹配';  // 匹配

※ 例外的,模式修飾符x可以將正則字串的空白字符忽略掉——然而只能忽略掉數據字符,像上例中的元字符中的空格還是會出現錯誤,通常來說這會讓正則變的更加難以理解,不太推薦使用:

echo preg_match('/a a a/x', "aaa") ? '匹配' : '不匹配';  // 匹配

二、大小寫

這個很好理解,基本上就是一個粗心大意的錯誤,畢竟我們平常用的搜尋工具裡搜尋字母通常大小寫都會被匹配,有時就會忘記正則中並不會自動的匹配大小寫:

echo preg_match('/flag/', "Flag") ? '匹配' : '不匹配';  // 不匹配

像這樣匹配的字符串中可能有首字母大寫的情況,自然就匹配不到了,這時候我們就要把大小寫的狀況都要考慮進來。不過有時候我們想要匹配某個單詞,只要是這4個字母連在一起都要匹配,寫起來就比較麻煩:

echo preg_match('/[Ff][Ll][Aa][Gg]/', "Flag") ? '匹配' : '不匹配';  // 匹配

雖然很難想像會有“fLaG”這種奇葩的寫法,但是不這樣寫畢竟無法匹配所有情況,但是有時候我們並不關心大小寫,要匹配的字符串卻很長,都這樣寫怕是要累死了,不過還好我們有“i”修飾符:

echo preg_match('/flag/i', "Flag") ? '匹配' : '不匹配';  // 匹配

修飾符「i」設定後,模式中的大小寫匹配將會不敏感。

三、貪婪模式

量詞「 」和「*」預設都是貪婪模式的,初學者在未遇到它所帶來的問題之前可能不明白這是什麼意思,下面kano來舉一個例子:

preg_match_all(&#39;/<span>.*<\/span>/&#39;, "<span>aaa</span><span>bbb</span>", $matches);
var_dump($matches);

新手入門學習正規表示式的常見錯誤

#正則的本意是找出字串中所有的span標籤,並把他們放到的一個數組中,然而結果很奇怪:兩個span竟然一次都被匹配上了!實際上想一想的話這也是合理的,字符串“aaabbb”確實是以開頭並以結尾的,只不過其中的.*匹配了太多的內容“aaabbb”都被匹配上了。這就是「 」和「*」的貪婪模式——預設他們會匹配盡量多的字符,而在後面加一個「?」可以取消這種貪婪模式,讓他們只匹配盡量少的內容:

preg_match_all(&#39;/<span>.*?<\/span>/&#39;, "<span>aaa</span><span>bbb</span>", $matches);
var_dump($matches);

新手入門學習正規表示式的常見錯誤

這次我們得到了想要的結果。

正規的語法比較特殊,若是不注意的話還是比較容易採坑的。

推薦學習:《正規表示式極速入門

以上是新手入門學習正規表示式的常見錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:www.kanoseo.cn。如有侵權,請聯絡admin@php.cn刪除
deepseek網頁版官方入口deepseek網頁版官方入口Mar 12, 2025 pm 01:42 PM

國產AI黑馬DeepSeek強勢崛起,震撼全球AI界!這家成立僅一年半的中國人工智能公司,憑藉其免費開源的大模型DeepSeek-V3和DeepSeek-R1,在性能上與OpenAI等國際巨頭比肩,甚至在成本控制方面實現了突破性進展,贏得了全球用戶的廣泛讚譽。 DeepSeek-R1現已全面上線,性能媲美OpenAIo1正式版!您可以在網頁端、APP以及API接口體驗其強大的功能。下載方式:支持iOS和安卓系統,用戶可通過應用商店下載;網頁版也已正式開放! DeepSeek網頁版官方入口:ht

deepseek服務器繁忙怎麼解決deepseek服務器繁忙怎麼解決Mar 12, 2025 pm 01:39 PM

DeepSeek:火爆AI遭遇服務器擁堵,如何應對? DeepSeek作為2025年開年爆款AI,免費開源且性能媲美OpenAIo1正式版,其受歡迎程度可見一斑。然而,高並發也帶來了服務器繁忙的問題。本文將分析原因並提供應對策略。 DeepSeek網頁版入口:https://www.deepseek.com/DeepSeek服務器繁忙的原因:高並發訪問:DeepSeek的免費和強大功能吸引了大量用戶同時使用,導致服務器負載過高。網絡攻擊:據悉,DeepSeek對美國金融界造成衝擊,

深度求索deepseek官網入口深度求索deepseek官網入口Mar 12, 2025 pm 01:33 PM

2025年開年,國產AI“深度求索”(deepseek)驚艷亮相!這款免費開源的AI模型,性能堪比OpenAI的o1正式版,並已在網頁端、APP和API全面上線,支持iOS、安卓和網頁版多端同步使用。深度求索deepseek官網及使用指南:官網地址:https://www.deepseek.com/網頁版使用步驟:點擊上方鏈接進入deepseek官網。點擊首頁的“開始對話”按鈕。首次使用需進行手機驗證碼登錄。登錄後即可進入對話界面。 deepseek功能強大,可進行代碼編寫、文件讀取、創

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。