尋找與取代中的正規表示式:七個範例新手指南
正規表示式(regex)是以幾個符號寫成的比對樣式。在尋找與取代工具中開啟正規表示式後,「尋找」欄位會讀取樣式而非純文字,因此句點代表任意一個字元,而不是句點本身。多數實用的樣式只需要幾個符號。搜尋一般字詞時請再把正規表示式關閉,因為這時每個符號都只代表字面上的意思。
尋找與取代一次取代文字中的某個詞免費使用你需要的符號
| 符號 | 比對內容 |
|---|---|
| . | 除換行外的任一字元 |
| * | 前面的項目,出現零次或多次 |
| + | 前面的項目,出現一次或多次 |
| ? | 前面的項目,出現一次或完全不出現 |
| [ ] | 方括號中的任一字元,例如 [aeiou] 或 [0-9] |
| \d \w \s | 一個數字;一個字母、數字或底線;一個空格、定位字元或換行 |
| ( ) | 群組,「取代」可以用 $1、$2 等重複使用 |
| ^ 和 $ | 整段文字的開頭與結尾 |
大寫字母會把類別反過來:\D 代表任何非數字的字元,\S 代表任何非空白的字元。
這個工具有兩點要注意。第一,\w 只比對英文字母、數字與底線。若要比對帶有重音符號的字母,請使用 \p{L},它可以比對任何字母系統中的字母。第二,^ 和 $ 比對的是整段文字的開頭與結尾,而不是每一行。下方的範例改用樣式中的換行來處理。
群組與 $1
把樣式的一部分放進括號,工具就會記住該部分比對到的內容。在「取代」中,$1 代表第一個群組,$2 代表第二個群組,$& 代表整段比對結果。工具本身的常見問題提供了一個經典例子:當「尋找」設為 (\w+)@(\w+)、「取代」設為 $2 at $1 時,文字 name@site 會變成 site at name。群組只有在開啟正規表示式時才有效;關閉時,$1 會照原樣輸入。
分步建立樣式
先從你想找的確切文字開始,再把會變動的部分換成符號。像 2026-11-04 這樣的日期可以寫成 \d{4}-\d{2}-\d{2},其中 {4} 代表前面的項目恰好出現四次。先測試簡單的版本,只有當反白顯示的結果顯示比對範圍太廣時,才再收緊樣式。
如果想在不改動任何內容的情況下,單獨看看樣式的效果,正規表示式測試器 會用範例文字執行它,並列出每一個比對結果。
七個範例
每個範例都要開啟正規表示式。複製之前,工具會反白顯示比對結果並顯示數量,因此請先在文字的副本上測試每個範例。
- 交換名字與姓氏。 「尋找」填入
(\w+) (\w+),「取代」填入$2, $1。"Ada Lovelace" 會變成 "Lovelace, Ada"。若名字帶有重音符號,請使用(\p{L}+) (\p{L}+)。這個樣式只適用於兩個字的姓名。 - 去除行尾空白。 「尋找」填入
[ \t]+(?=\r?\n|$),「取代」留空。它會比對緊接在換行或文字結尾之前的空格或定位字元。前瞻斷言(?=...)只檢查換行是否存在,不會將其移除;\r?則涵蓋 Windows 的換行格式。修正貼上的文字 內有「逐行修剪」選項,功能相同。 - 合併重複空格。 「尋找」填入
{2,},也就是連續兩個或以上的空格;「取代」填入一個空格。兩個以上的空格會變成一個。它也會縮減縮排,因此處理程式碼時請略過。 - 為每一行加上前綴。 「尋找」填入
(.+),「取代」填入- $1。換行之間每段一個以上的字元就是一行,$1 會保存該行內容。空白行會被略過。請使用一個以上的寫法.+,而不要用零個以上的寫法,因為零個以上的寫法也會比對換行之間的空位,使空白行多出一個多餘的破折號。 - 刪除空白行。 「尋找」填入
\n\s*(?=\n),「取代」留空。比對內容是一個換行,加上其後直到下一個換行之前的所有空白字元,而下一個換行會被保留。這會移除空白行,包括只含空格的行。由於\s也會比對歸位字元,Windows 的換行格式同樣適用。位於文字最上方的空白行會保留。刪除重複行 工具有一個「刪除空白行」選項,只要勾選一下就能達到相同效果。 - 每行一個項目。 「尋找」填入
,[ ]*,「取代」填入\n,並勾選「取代時讀取 \n 和 \t」。"apples, pears, plums" 會變成三行。若不勾選,\n 會以反斜線加 n 這兩個字元保留下來。 - 為每個數字加上方括號。 「尋找」填入
\d+,「取代」填入[$&]。"Order 42 and 7" 會變成 "Order [42] and [7]"。$& 代表整段比對結果,因此不需要群組。
複製前的檢查
- 比對數量與反白顯示會告訴你樣式抓到了什麼。若反白顯示有誤,結果也會出錯。
- 樣式有錯誤時,欄位下方會顯示「不是有效的樣式」。修正樣式後,結果會自動更新。
- 將「取代」留空,就能刪除所有比對結果。欄位中的提示文字也有說明。
- 「區分大小寫」預設為關閉,因此範例會同時比對大寫與小寫。當大小寫有差別時,請將其開啟。
- 開啟正規表示式時,若要尋找句點或方括號本身,請在前面加上反斜線:\. 或 \[。
特殊情況
- 貪婪比對。
.+會盡可能多地比對。若要在第一個符合處停止,請加上問號:.+?。這對像<b>.+</b>這樣的文字很重要,因為它可能跨越多個標籤。 - 完整單字。 若只是一般字詞,關閉正規表示式會比較安全。如工具的常見問題所說明,「只比對完整單字」可以避免 cat 符合 category 中的部分字串。尋找與取代指南 有更多完整單字替換的範例。
- 保留原文。 結果會顯示在獨立的欄位中,輸入的文字則維持原樣。確認無誤後,再將結果複製出來。
借助 AI 協助,由英文原文翻譯而成。
留言
還沒有留言,搶先留言吧。


