正規表示式 基礎知識總結

2021-06-27 19:15:26 字數 3163 閱讀 1668

一直只是知道正規表示式的用途,但具體沒使用過,今天稍微了解了下它的基礎用法。這裡總結一下。

命令空間:system.text.regularexpressions

用途:對字串進行查詢和替換;

識別重複的單詞;

轉換格式;

區分乙個字串的各個子元素,並進行提取。

regex類:

是對正規表示式引擎的類抽象,通過呼叫該抽象類的不同方法,實現對正規表示式的處理。

該類的主要方法如下所示,具體用途相信通過方法名即可知道:

了解完regex類的主要方法後,還需要關注三個比較重要的類和它們的層次,分別是:match類、group類和capture類。

假設有如下字串,input(原始字串),pattern(正規表示式).

match類:模式匹配返回的乙個結果,比如呼叫regex.match()方法,會根據輸入的正規表示式(pattern),在字串(input)中進行匹配,每個匹配的結果返回乙個match類例項。

group類:表示正規表示式(pattern)中的子表示式的匹配結果,用括號括起來,如patter=@"(\d)[.,]?(\d)"。就有兩個組:(\d)和(\d)。

capture類:返回匹配子表示式的結果。capturecollections返回所有符合子表示式的結果。

group類與capture類的區別:

參考msdn上的幫助文件(通過以下**來說明它們的區別:

1

using

system;

2using

system.text.regularexpressions;34

public

class

example

5: ''

", groupctr, group.value);

18int capturectr = 0;19

foreach (capture capture in

group.captures)

20: ''

", capturectr, capture.value);23}

24} 25}

26}27//

the example displays the following output:

28//

match: this is one sentence.

29//

group 1: 'this is one sentence.'

30//

capture 1: 'this is one sentence.'

31//

group 2: 'sentence'

32//

capture 1: 'this '

33//

capture 2: 'is '

34//

capture 3: 'one '

35//

capture 4: 'sentence'

36//

group 3: 'sentence'

37//

capture 1: 'this'

38//

capture 2: 'is'

39//

capture 3: 'one'

40//

capture 4: 'sentence'

如果在字元後新增了quantifiers(數量詞),如在pattern表示式中,(\w+?)用來匹配出現在乙個句子當中的多個單詞。但是group物件只返回最後乙個匹配(\w+?)的物件。而capture記錄的是每一次匹配(\w+?)的物件。如果沒有新增數量詞,capture和group可用來表示同乙個物件。

下圖表示了三者的繼承關係(左圖),在使用時的層次關係(右圖):

接下來,就是介紹如何寫正規表示式。這就是對不同字串的分類和抽象表示的過程。主要包括以下9種型別:

character escapes,轉義字元;

character classes:表示對字元的抽象分類;

anchors:錨點,界定字元位置;

group construcs:對字元進行組合,使正則引擎想對待乙個字元一樣處理這個序列,用括號括起乙個組;

quantifiers:數量詞,定義字元出現的次數;

backreference constructs:使用之前匹配的子表示式再次進行匹配;

alternation constructs:選擇匹配語句;

substitutions:字元替換;

regular expression options:正規表示式具體操作選項。

下面附上一些自己練習的簡單正規表示式,以方便有乙個直觀理解:

1.將首字母替換成大寫:

1

string input = "

this is a good morning.";

2string pattern = @"

\b([a-z])([a-za-z])\b";

3string result = regex.replace(input, pattern,

match=>match.groups[1].value.toupper()+match.groups[2

].value);

4console.writeline(result);56

//結果:this is a good morning.

2.替換貨幣符號:

1

string word = "

$12.4 $0.2 $2 3.5";

2string sub = "$1"

;3string pattern = @"

\p*(\d+[,.]?\d*)";

4string result = regex.replace(word, pattern, "

($1)");

5console.writeline(result);67

//result:8//

(12.4) (0.2) (2) (3.5)

正規表示式基礎知識

我們先從簡單的開始。假設你要搜尋乙個包含字元 cat 的字串,搜尋用的正規表示式就是 cat 如果搜尋對大小寫不敏感,單詞 catalog catherine sophisticated 都可以匹配。也就是說 1.1 句點符號 假設你在玩英文拼字遊戲,想要找出三個字母的單詞,而且這些單詞必須以 t ...

正規表示式基礎知識

乙個正規表示式就是由普通字元 例如字元 a 到 z 以及特殊字元 稱為元字元 組成的文字模式。該模式描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。如 jscript vbscript 匹配 t t 匹配乙個空白行。d d d d 驗證乙個i...

正規表示式基礎知識

正規表示式基礎知識 正規表示式是一種可以用於模式匹配和替換的強有力的工具,乙個正規表示式就是由普通的字元 例如字元 a 到 z 以及特殊字元 稱為元字元 組成的文字模式,它描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。正規表示式在字元資料處...