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 之後就節省了非常多時間。

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


6會員
10內容數
只要10分鐘!
留言0
查看全部
發表第一個留言支持創作者!
#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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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 的技巧,於是就來寫篇筆記吧~