「正則表達式」是專用於在一段文字內容中「尋找」關鍵字的公式,與數學公式類似,比常見的「萬用字元」強大無數倍。如果大家使用過或了解過「萬用字元」,那學習「正則表達式」也不是一件難事!

影片講解
https://www.bilibili.com/video/BV1Z34y147W6
正則表達式的作用
在文字「內容」中尋找「關鍵字」,和我們使用最多的 Ctrl+F 類似。
關於「內容」的定義
也就是我們日常理解的「記事本檔案中的內容」,「內容」不能是圖片或影片。另外,常見的 txt 檔案格式的記事本只是記事本檔案的一種,還有很多記事本檔案,只是副檔名不一樣而已。
我們需要將一個文字「內容」看成兩部分:
1、組成「內容」的所有「文字」
2、文字與文字之間的邊界,也稱之為「位置」
什麼是文字?
以下內容都是文字:
- 肉眼看得見的文字或標點符號
- 肉眼看不見的空白,包含空格、換行符、Tab 鍵等
舉例:
文字「abcde」與文字「a bc d e」是兩個不同的文字,千萬不要認為中間的空格肉眼看不到,就認為電腦會忽略處理,電腦中的所有處理邏輯就是數學計算邏輯,任何的條件特徵都會成為影響結果的重要因素。
什麼是位置?
位置就是單個文字與單個文字的分界線。
舉例:
文字「abcde」共有 6 個位置,這 6 個位置是:1a2b3c4d5e6
正則表達式可以尋找到什麼?
既然「內容」是由「文字」和「位置」組成,因此正則表達式可以尋找到的「關鍵字」可以是:文字、位置、文字和位置的組合。
舉例:
現有內容「地球是圓的」:
1、當我們尋找的文字是「圓」字時,其實也相當於同時尋找了:圓字左側的位置+圓字本身+圓字右側的位置
2、當我們尋找的位置是「地」字右側的位置時,相當於我們將滑鼠的游標放到了文字「地」和文字「球」的中間位置
尋找的方向
和我們閱讀一段文字的方向一樣,正則表達式是「從左往右」進行「關鍵字」的尋找。
尋找的方式
尋找固定的文字
也就是我們日常說的「精確尋找」,即我們輸入什麼就尋找什麼,尋找到的內容與我們輸入的內容完全一樣,一字不差。
範例:今年是 2022 年,明年是 2023 年。
- 當我們尋找的文字是「2022」時,可以正確尋找到。
- 當我們尋找的文字是「2008」時,不可以尋找到。
尋找動態有規律的文字
也就是我們日常說的「模糊尋找」,即我們輸入的只是一個公式,這個公式可以配對到多個內容。
範例:今年是 2022 年,明年是 2023 年。
- 當我們尋找的公式是「\d+」,可以正確尋找到:2022、2023
- 當我們尋找的公式是「8\d+」,不可以尋找到,原因是範例內容中沒有以數字 8 開頭的數字
寫一個公式(正則表達式)的完整步驟
範例:現在是8點50,我在19:30有個會議。
第一步、列出我們想要尋找到的內容:
8點50、19:30
第二步、找出它們的規律,並用一句完整的話進行總結:
可以看到我們要尋找到的內容的規律是:一位或兩位數字後面跟一個漢字「點」或跟一個英文冒號「:」,然後是兩位數字。
第三步、寫出公式:
- 如果懂正則的基本語法,則我們很快就可以寫出公式為:\d{1,2}[點:]\d{2}
- 如果不懂正則的基本語法,則我們可以使用「我的ABC軟體工具箱」中的「正則表達式視覺化產生器」來自動產生,具體操作教學看這裡:https://www.wodeabc.com/article/show/8002295
常見問題
我理解此文的概念,但我不知道正則表達式的具體語法,怎麼辦?
只要您完全理解了本文的所有概念,從此以後根本不用學習正則表達式的具體語法,您完全可以只使用「我的ABC軟體工具箱」中的「正則表達式視覺化產生器」來自動產生。
具體教學看這裡:https://www.wodeabc.com/article/show/8002295
為什麼不使用 glob 萬用字元?
因為 glob 萬用字元一般用於尋找檔名與路徑相關的場景中,而且正則表達式本身就有相應的萬用字元,想怎麼配對就怎麼配對,強大得不得了。
為什麼尋找不成功?
檢查實際內容中是否有空格、換行符等肉眼看不見的內容,從而導致自己在寫正則表達式時忽略掉了
我們使用的是哪個版本的正則表達式引擎?
微軟的 .NET 正則表達式引擎