文本內容查找公式「正則表達式」的基本概念
翻譯:简体中文繁體中文,更新於:2025-04-23 15:24
「正則表達式」是專用於在一段文本內容中「查找」關鍵字的公式,與數學公式類似,比常見的「通配符」強大一萬倍。 如果大家使用過或了解過「通配符」,那學習「正則表達式」也不是一件難事!
視頻講解
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 正則表達式引擎