一直只是知道正規表示式的用途,但具體沒使用過,今天稍微了解了下它的基礎用法。這裡總結一下。
命令空間: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如果在字元後新增了quantifiers(數量詞),如在pattern表示式中,(\w+?)用來匹配出現在乙個句子當中的多個單詞。但是group物件只返回最後乙個匹配(\w+?)的物件。而capture記錄的是每一次匹配(\w+?)的物件。如果沒有新增數量詞,capture和group可用來表示同乙個物件。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'
下圖表示了三者的繼承關係(左圖),在使用時的層次關係(右圖):
接下來,就是介紹如何寫正規表示式。這就是對不同字串的分類和抽象表示的過程。主要包括以下9種型別:
character escapes,轉義字元;
character classes:表示對字元的抽象分類;
anchors:錨點,界定字元位置;
group construcs:對字元進行組合,使正則引擎想對待乙個字元一樣處理這個序列,用括號括起乙個組;
quantifiers:數量詞,定義字元出現的次數;
backreference constructs:使用之前匹配的子表示式再次進行匹配;
alternation constructs:選擇匹配語句;
substitutions:字元替換;
regular expression options:正規表示式具體操作選項。
下面附上一些自己練習的簡單正規表示式,以方便有乙個直觀理解:
1.將首字母替換成大寫:
12.替換貨幣符號: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.
1string 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 以及特殊字元 稱為元字元 組成的文字模式,它描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。正規表示式在字元資料處...