0%

【Regular Expression】分群與取代

在正規表示法中,可以將比對的資料做分群與命名,而在.Net中的語法是

(?:<群組名稱>)

應用方法如下

1
2
3
4
5
6
7
8
string Date = "2017/1/20";
Regex reg = new Regex(@"^(?<Year>\d{4})/(?<Month>\d{1,2})/(?<Day>\d{1,2})");
var Match = reg.Match(Date);

Console.WriteLine(string.Concat("年 :", Match.Groups["Year"].Value));
Console.WriteLine(string.Concat("月 :",Match.Groups["Month"].Value));
Console.WriteLine(string.Concat("日 :",Match.Groups["Day"].Value));

也可以用來做取代的用途

1
2
3
4
5
string Date = "2017/1/20";
Regex reg = new Regex(@"^(\d{4})/(\d{1,2})/(\d{1,2})");

Console.WriteLine(reg.Replace(Date,@"$1年$2月$3日"));

[![](https://4.bp.blogspot.com/-HQu1GmHFF_M/WIFzWkDPQQI/AAAAAAAAIDo/k5REjSoQ7fMeQBuCYZe7QRSQlXG0SXlFgCLcB/s1600/%25E6%259C%25AA%25E5%2591%25BD%25E5%2590%258D.png)](https://4.bp.blogspot.com/-HQu1GmHFF_M/WIFzWkDPQQI/AAAAAAAAIDo/k5REjSoQ7fMeQBuCYZe7QRSQlXG0SXlFgCLcB/s1600/%25E6%259C%25AA%25E5%2591%25BD%25E5%2590%258D.png)

括號()包起來的地方,正規表示法比對到時會把他當作一個群組,而其中Replace的地方寫著 $1代表第一個括號比對的東西放這邊,所以$1會變成2017,後面以此類推,就會變成2017年1月20日這種格式。

所以也可以改成這樣,變成國外表示年份的格式**$2-$3-$1**,就會變成 1-20-2017

以上筆記一下。