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
留言分享你的想法!
阿Han-avatar-img
2023/08/15
非常實用的技巧
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
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 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,很多语言里都是通用的,而且非常的强大。这就是我们的正则表达式。 说起正则表达式,很多程序员其实对其都不是很重视,但是
Thumbnail
如果想要更快速的打出特殊符號,該怎麼做? 不管是頁面切換或重複動作,都會中斷打字行為,除了很擾人之外,有會打壞我們工作的節奏。因此,分享各種小方法來有效提升打字的效率!
Thumbnail
如果想要更快速的打出特殊符號,該怎麼做? 不管是頁面切換或重複動作,都會中斷打字行為,除了很擾人之外,有會打壞我們工作的節奏。因此,分享各種小方法來有效提升打字的效率!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News