正则表达式中的 $1 和 $2 是什么

本文关键字:是什么 正则表达式 | 更新日期: 2023-09-27 18:33:33

C# 正则表达式中的 $1 和 $2 是什么?两者都属于组吗?

正则表达式中的 $1 和 $2 是什么

这是按索引捕获的组的值。 $1 是第一个捕获的组,$2 是第二个捕获的组。正如大卫所指出的,这些值用于替换模式。

string input = "Hello World";
string result = Regex.Replace(input, @"('w+) ('w+)", "$2 $1");

输出:World Hello

这些是替换。具体编号的组替换。从文档中:

$number 语言元素包括最后一个子字符串,匹配 替换字符串中的数字捕获组,其中数字是 捕获组的索引。例如,替换模式 $1 表示匹配的子字符串将替换为第一个 捕获的组。有关编号捕获组的详细信息, 请参阅在正则表达式中对构造进行分组。

使用 (?)语法从左到右从 1 开始编号。 命名组也从左到右编号,从 1 开始 大于最后一个未命名组的索引。例如,在 正则表达式 (''w((?''d(,名为 组为 2。

如果 number 未指定在 正则表达式模式,$number被解释为文字 用于替换每个匹配项的字符序列。

以下示例使用$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