我有關於正則表達式在C#中的簡單問題。
什麼是C#正則表達式中的$ 1和$ 2?
兩者是否屬於羣體?
我有關於正則表達式在C#中的簡單問題。
什麼是C#正則表達式中的$ 1和$ 2?
兩者是否屬於羣體?
這是通過索引捕獲的組的值。 $ 1是第一個被捕獲的組,而$ 2是第二個被捕獲的組。正如David所指出的,這些值用於替換模式。
string input = "Hello World";
string result = Regex.Replace(input, @"(\w+) (\w+)", "$2 $1");
輸出:World Hello
這些是substitutions。具體爲numbered group substitutions。從文檔:
的$數語言元素包括由 匹配的最後一個子字符串替換字符串,其中number是 捕獲組的索引捕獲組的數量。例如,替換模式 $ 1表示匹配的子字符串將被第一個被捕獲的組替換。有關編號捕獲組的更多信息,請參見 請參見使用正則表達式對組合構造進行分組。
使用 (?)語法捕獲未明確指定名稱的組,從左到右從1開始編號。 命名組也從左到右編號,從一個 開始,大於最後未命名組的索引。例如,在 正則表達式(\ w)的(?\ d),命名 組數字的索引是2
如果數目沒有指定在 正則表達式模式中定義的有效捕獲組, $數字被解釋爲文字 用於替換每個匹配的字符序列。
以下示例使用$ number替換從十進制值中去除 貨幣符號。它將刪除貨幣值開頭或結尾處的貨幣符號 ,並識別兩個最常見的小數點分隔符(「。」和「,」) 。
using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string pattern = @"\p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}*"; string replacement = "$1"; string input = "$16.32 12.19 £16.29 €18.29 €18,29"; string result = Regex.Replace(input, pattern, replacement); Console.WriteLine(result); } } // The example displays the following output: // 16.32 12.19 16.29 18.29 18,29
你能否在下面的鏈接中解釋一下這個例子? [link](http://msdn.microsoft.com/en-us/library/xwewhkd1.aspx)_Secound example_ ** line **'string replacement =「$ 2」;' – Viki888
這在文檔的第一段中有解釋我在答案中引用。 「$ 1」是第一個捕獲組,「$ 2」是第二個捕獲組,等等。 –
僅供參考,那些是.NET正則表達式語法的一部分。 C#不支持正則表達式。所有正則表達式支持都是.NET Framework的一部分。 –
請把你的正則表達式樣本。 $ 1,$ 2,$可能意味着不同的事情,這取決於您使用它的上下文。 而@JohnSaunders是對的。 – celerno
@celerno除了編號的組替換之外,是否有1美元? –