Regex Replace 帶來的方便

更新於 2023/08/15閱讀時間約 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
6會員
10內容數
只要10分鐘!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
#Jaku的沙龍 的其他內容
微軟想把 VS 的一些編輯功能在 VS Code 上實作, Unity 也在幾天前推出了基於 C# Dev Kit 的插件,因為新舊版本並不相容,這邊說明兩種(OmniSharp、Roslyn Analyzers)開發環境設置。
深入探討一些程式碼撰寫的習慣
紀錄如何讓簡單的 Property 在 Inspector 內顯示。
每個專案開發,都是由多個工程師來完成,就算只有一個人,隨著專案增量,你便會與過去的你面對面,這時候程式碼的可讀性高低就會成為左右你開發效率的一塊石頭,這篇就來說說幾個程式碼管理的小撇步
C# 9.0 給 Unity 程式設計上帶來的便利
如何使用Game CI 提供的Github Action 將建置專案自動化
微軟想把 VS 的一些編輯功能在 VS Code 上實作, Unity 也在幾天前推出了基於 C# Dev Kit 的插件,因為新舊版本並不相容,這邊說明兩種(OmniSharp、Roslyn Analyzers)開發環境設置。
深入探討一些程式碼撰寫的習慣
紀錄如何讓簡單的 Property 在 Inspector 內顯示。
每個專案開發,都是由多個工程師來完成,就算只有一個人,隨著專案增量,你便會與過去的你面對面,這時候程式碼的可讀性高低就會成為左右你開發效率的一塊石頭,這篇就來說說幾個程式碼管理的小撇步
C# 9.0 給 Unity 程式設計上帶來的便利
如何使用Game CI 提供的Github Action 將建置專案自動化
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
#大眾占卜 #快速占卜 #滿月許願 射手座滿月要記得許願唷!! 這是一個開拓事業格局的好時機 趕快一起來占卜看看 這個射手座滿月會帶給你怎樣的驚喜吧! https://youtu.be/k4l2bK2YC8M
Thumbnail
RegenC.是在為靈魂早已腐爛的人們超渡嗎?頌經似的說唱,一句一句的撕開他跟她的偽善臉皮,反正一切理論、道理,全都是後天堆砌,全都只是為那些不公不義圓謊,不如…
Thumbnail
Regeneron Pharmaceuticals Inc, 美股NYSE ticker REGN 再生元製藥公司,是一間成立1988年的老牌製藥大廠,目前專注在 癌症的腫瘤治療藥物(Oncology)。基本上是Renegerate 和 Neuron兩個詞合成,意思就是“讓神經元再生”。
Thumbnail
倫敦第一處裝設耶誕燈飾的街道/時尚潮流品牌聚集地/弧形街景
Thumbnail
一句同陌生人打開話題嘅說話: 「食咗飯未呀?」(2019之前) 「Wish you were OK」(2019或之後) It’s OK to be not OK,我們想你知道,在你不OK的時候,我們還在。Wish you were OK,也希望Regen還有我們的城市都能早日康復吧!
Thumbnail
讓我們化身雅加達非市中心街道旁的一叢灌木,靜靜地看著這城市自1980至2020年間城市面貌的變遷。
Thumbnail
Covid-19爆發到現在已經五個多月了。這場疫情成為席捲全球的超級大流行,世界各地都瀰漫著緊張與恐懼交加的氛圍,各國防疫的情形也都各不一樣,我們都很開心台灣是非常成功的。大家應該都具備基本的防疫知識,網路上也有很多媒體、文章整理出疫情爆發可用的線上學習資源。不過今天我們想談的比較特別一點,針對Co
Thumbnail
在世界上450萬頭山羊中,約莫有95%都在開發中國家,山羊常常是人們唯一飼養的家禽。他們價格相對便宜、也比較能夠適應極端氣候。百靈佳殷格翰的動物健康管理團隊,在瞭解許多開發中國家小農的需求後,發現當動物變得健康,他們才有經濟能力照顧他們的家人健康並創造財富。
Thumbnail
遙想當年初探 Regular Expression,腦袋紮紮實實地被凌虐了一番,同時十分敬佩把正規表示式寫的簡潔有力又精確無誤的神人。最近學校在上編譯器課程,估計近期內便會接觸到不少 RegExp 的技巧,於是就來寫篇筆記吧~
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
#大眾占卜 #快速占卜 #滿月許願 射手座滿月要記得許願唷!! 這是一個開拓事業格局的好時機 趕快一起來占卜看看 這個射手座滿月會帶給你怎樣的驚喜吧! https://youtu.be/k4l2bK2YC8M
Thumbnail
RegenC.是在為靈魂早已腐爛的人們超渡嗎?頌經似的說唱,一句一句的撕開他跟她的偽善臉皮,反正一切理論、道理,全都是後天堆砌,全都只是為那些不公不義圓謊,不如…
Thumbnail
Regeneron Pharmaceuticals Inc, 美股NYSE ticker REGN 再生元製藥公司,是一間成立1988年的老牌製藥大廠,目前專注在 癌症的腫瘤治療藥物(Oncology)。基本上是Renegerate 和 Neuron兩個詞合成,意思就是“讓神經元再生”。
Thumbnail
倫敦第一處裝設耶誕燈飾的街道/時尚潮流品牌聚集地/弧形街景
Thumbnail
一句同陌生人打開話題嘅說話: 「食咗飯未呀?」(2019之前) 「Wish you were OK」(2019或之後) It’s OK to be not OK,我們想你知道,在你不OK的時候,我們還在。Wish you were OK,也希望Regen還有我們的城市都能早日康復吧!
Thumbnail
讓我們化身雅加達非市中心街道旁的一叢灌木,靜靜地看著這城市自1980至2020年間城市面貌的變遷。
Thumbnail
Covid-19爆發到現在已經五個多月了。這場疫情成為席捲全球的超級大流行,世界各地都瀰漫著緊張與恐懼交加的氛圍,各國防疫的情形也都各不一樣,我們都很開心台灣是非常成功的。大家應該都具備基本的防疫知識,網路上也有很多媒體、文章整理出疫情爆發可用的線上學習資源。不過今天我們想談的比較特別一點,針對Co
Thumbnail
在世界上450萬頭山羊中,約莫有95%都在開發中國家,山羊常常是人們唯一飼養的家禽。他們價格相對便宜、也比較能夠適應極端氣候。百靈佳殷格翰的動物健康管理團隊,在瞭解許多開發中國家小農的需求後,發現當動物變得健康,他們才有經濟能力照顧他們的家人健康並創造財富。
Thumbnail
遙想當年初探 Regular Expression,腦袋紮紮實實地被凌虐了一番,同時十分敬佩把正規表示式寫的簡潔有力又精確無誤的神人。最近學校在上編譯器課程,估計近期內便會接觸到不少 RegExp 的技巧,於是就來寫篇筆記吧~