Regex.Replace - Substitutions
這是屬於 Regex.Replace 的 Substituting 特有作法
一、Substituting a Numbered Group
syntax:$number
using System;
using System.Text.RegularExpressions;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string str = "2*3";
string pattern = @"(\d)\*(\d)";
string replacement = str + "=" + "$2+$1+1";
string result = Regex.Replace(str, pattern, replacement);
Console.WriteLine(result);
}
}
}
其結果為
說明:
1、「$1」代表第一分組符合值、「$2」代表第二分組符合值、
「$3」代表第三分組符合值...依序類推。
2、replacement 在字串上可以和 n 個「$n」做分組的任意組合。
二、Substituting a Named Group
syntax:${name}
using System;
using System.Text.RegularExpressions;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string str = "2*3";
string pattern = @"(?<two>\d)\*(?<three>\d)";
string replacement = str + "=" + "${three}+${two}+1";
string result = Regex.Replace(str, pattern, replacement);
Console.WriteLine(result);
}
}
}
其結果為
說明:
跟上例一樣,差別在於使用具名分組的方式來組合。
三、Substituting a "$" Symbol
syntax:$$
using System;
using System.Text.RegularExpressions;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string str = "2*3";
string pattern = @"(?<two>\d)\*(?<three>\d)";
string replacement = str + "=" + "$$${three}+${two}+1";
string result = Regex.Replace(str, pattern, replacement);
Console.WriteLine(result);
}
}
}
其結果為
說明:
在 Substituting 裡,「$」是一個關鍵字,如果要在「替換群組」前面再加上一個單純的「$」號,
請使用「$$」,其將被轉譯成一個「$」號。
四、Substituting the Entire Match
syntax:$&
using System;
using System.Text.RegularExpressions;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string str = "123";
string pattern = @"(\d)+";
string replacement = "$&";
string result = Regex.Replace(str, pattern, replacement);
Console.WriteLine(result);
}
}
}
其結果為
說明:
「$&」號用來取得所有群組結合成一串內容,如上例會有一個群組分別是「1」、「2」、「3」,
每一群組的分組只有自己一個。
五、Substituting the Text before the Match
syntax:$`
using System;
using System.Text.RegularExpressions;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string str = "123a987";
string pattern = @"a";
string replacement = "$`";
string result = Regex.Replace(str, pattern, replacement);
Console.WriteLine(result);
}
}
}
其結果為
說明:
拿前面的字串當作要替換的內容。
六、Substituting the Text after the Match
syntax:$'
using System;
using System.Text.RegularExpressions;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string str = "123a987";
string pattern = @"a";
string replacement = "$'";
string result = Regex.Replace(str, pattern, replacement);
Console.WriteLine(result);
}
}
}
其結果為
說明:
拿後面的字串當作要替換的內容。
七、Substituting the Last Captured Group
syntax:$+
八、Substituting the Entire Input String
syntax:$_
參考資料: