Regex Replace 帶來的方便

更新 發佈閱讀 3 分鐘

前言

在其他語言會時常使用正規表達式來幫字串進行 Filter,在遊戲製作裡面比較遇不到處理使用者的字串輸入、資料庫查詢結果的情況,但在編輯程式碼,有搜尋(Ctrl+F)、取代(Ctrl+H)需求時使用 Regex 也能提升工作效率。


打開

為了快速實踐,可以把常用的文字編輯器、IDE 開起來,隨便開個專案,按下 Ctrl+H 開啟取代的選單,並且將 Regex 選項勾選。

Visual Studio

Visual Studio

VS Code

VS Code

就能一起愉快玩耍了。


正規表達式

我們來說說正規表達式的寫法。

特殊字元

有些特殊字元,如果需要比對它們,則需要在前面加上跳脫字元 \ ,比如原意字元:

^$()*+?.[\{|

或是待會要說到的特殊字元們。


常用的特殊字元

這邊要說一些常用的特殊字元。

  1. ^
    指的是 開頭
  2. *
    符合條件零次或多次。
  3. ?
    符合條件一次。
  4. +
    符合條件至少一次。
  5. $
    指的是 結尾
  6. |
    指的是 ,可以比對多個條件。
  7. \d
    指的是 數字(0-9)
  8. \D
    指的是 非數字(not 0-9)
  9. \w
    指的是 字元
  10. \s
    指的是 空白字元
  11. \S
    指的是 非空白字元
  12. \n
    指的是 換行
  13. \b
    指的是 詞邊界
  14. \B
    指的是 非詞邊界


樣式

() 指的是樣式,將條件包在括弧裡面,在取代功能常使用。
也可以搭配特殊字元 | 多條件比對。


集合

[] 指的是集合,比對內容 可以是被包在括弧內的任何內容

使用時可以用 - 來描述一個字元範圍。

如果是要 排除集合內容 ,則需要加上 ^ 字元。

我們用 Sword Art Online 這個詞來看幾個例子:

[saoooo]Sword Art Online

沒錯,你多打幾個 o 是沒有幫助的。

[^(a-o)(\s)]S word Ar t Online

排除了 a-o 還有 \s(空白字元),之所以在字之間加上空白,是因為它們並不是以一個詞的形式被檢索到。


次數

{n} 指的是指定內容出現的次數(n ≧ 0)。一樣拿 Sword Art Online 舉例:

(\b[a-z]{6}\b) → Sword Art Online

記得嗎, \b 是詞邊界,所以相當於比對了 詞邊界 + [a-z] x 6次 + 詞邊界


結合VS應用

基本上只要使用上面所說的組合,就能做很多條件篩選。

如果需要使用已經比對到的 樣式 ,在搜尋使用 \n ,取代使用 $n (n 為第幾個樣式,從 1 開始)。

搜尋

例子,這次是 Starburst Stream

(\w)\w*\1\w*Startburst Stream

\w 是字元([A-Za-z0-9_]),而 \w* 是符合字元零次或多次,組合起來就是 字元(樣式1) + 任意字元 + 樣式1 + 任意字元

所以這個條件表示 有重複字元的詞


取代

使用取代時,有幾個方便的模式:

  1. \l | \L
    篩選出來的詞 第一個 | 所有 字轉為小寫。
  2. \u | \U
    篩選出來的詞 第一個 | 所有 字轉為大寫。

最簡單而且常用的例子:

搜尋:(\w+) | 取代:\U$1

(\w+) 能夠把所有詞篩選出來,而這邊使用 \U 能把 $1(樣式1) 所有字轉為大寫。


總結

以前我處理遊戲串接後端的 Data Model,寫各個 [JsonProperty] 會花不少心力,自從使用 Regex Replace 之後就節省了非常多時間。

這篇可能沒有講得非常清楚,但還是希望大家都能掌握這個好東西。


留言
avatar-img
#Jaku的沙龍
6會員
10內容數
只要10分鐘!
#Jaku的沙龍的其他內容
2023/09/05
UPM 插件管理、匯入、打包
Thumbnail
2023/09/05
UPM 插件管理、匯入、打包
Thumbnail
2023/08/06
微軟想把 VS 的一些編輯功能在 VS Code 上實作, Unity 也在幾天前推出了基於 C# Dev Kit 的插件,因為新舊版本並不相容,這邊說明兩種(OmniSharp、Roslyn Analyzers)開發環境設置。
Thumbnail
2023/08/06
微軟想把 VS 的一些編輯功能在 VS Code 上實作, Unity 也在幾天前推出了基於 C# Dev Kit 的插件,因為新舊版本並不相容,這邊說明兩種(OmniSharp、Roslyn Analyzers)開發環境設置。
Thumbnail
2023/08/03
深入探討一些程式碼撰寫的習慣
Thumbnail
2023/08/03
深入探討一些程式碼撰寫的習慣
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
👨‍💻 簡介 在處理string時,正則表達式是一個非常有用的工具。Go語言的regexp package 可以使用正則表達式,用來執行如檢查string是否匹配某個模式、提取匹配的subString等操作。
Thumbnail
👨‍💻 簡介 在處理string時,正則表達式是一個非常有用的工具。Go語言的regexp package 可以使用正則表達式,用來執行如檢查string是否匹配某個模式、提取匹配的subString等操作。
Thumbnail
運用 Golang 正則表達式處理文本。從替換操作到 URL 解析,再到日誌分析,掌握實際應用場景下的正則技巧,提取、轉換和分析文本數據。
Thumbnail
運用 Golang 正則表達式處理文本。從替換操作到 URL 解析,再到日誌分析,掌握實際應用場景下的正則技巧,提取、轉換和分析文本數據。
Thumbnail
在其他語言會時常使用正規表達式來幫字串進行 Filter,在遊戲製作裡面比較遇不到處理使用者的字串輸入、資料庫查詢結果的情況,但在編輯程式碼,有搜尋(Ctrl+F)、取代(Ctrl+H)需求時使用 Regex 也能提升工作效率。
Thumbnail
在其他語言會時常使用正規表達式來幫字串進行 Filter,在遊戲製作裡面比較遇不到處理使用者的字串輸入、資料庫查詢結果的情況,但在編輯程式碼,有搜尋(Ctrl+F)、取代(Ctrl+H)需求時使用 Regex 也能提升工作效率。
Thumbnail
Hi,大家好。我是茶桁。 不知不觉中,咱们针对人工智能的Python课程已经过去了一半。相信大家这段时间也都有所进步了。 今天这节课呢,我给大家划一个重点。不仅仅是Python,很多语言里都是通用的,而且非常的强大。这就是我们的正则表达式。 说起正则表达式,很多程序员其实对其都不是很重视,但是
Thumbnail
Hi,大家好。我是茶桁。 不知不觉中,咱们针对人工智能的Python课程已经过去了一半。相信大家这段时间也都有所进步了。 今天这节课呢,我给大家划一个重点。不仅仅是Python,很多语言里都是通用的,而且非常的强大。这就是我们的正则表达式。 说起正则表达式,很多程序员其实对其都不是很重视,但是
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News