簡體   English   中英

執行Regex.Replace()時如何使用命名組

[英]How to use named groups when performing a Regex.Replace()

在執行Regex.Replace時如何使用命名捕獲? 我已經做到了這一點,它做了我想要的但不是我想要的方式:

[TestCase("First Second", "Second First")]
public void NumberedReplaceTest(string input, string expected)
{
    Regex regex = new Regex("(?<firstMatch>First) (?<secondMatch>Second)");
    Assert.IsTrue(regex.IsMatch(input));
    string replace = regex.Replace(input, "$2 $1");
    Assert.AreEqual(expected, replace);
}

我希望將這兩個單詞與命名的捕獲匹配,然后在執行替換時使用(命名)捕獲。

而不是"$2 $1" ,您可以使用"${secondMatch} ${firstMatch}"

您可以在此處執行所有替換的列表。

這是一個簡短的列表:

$ number - 按編號捕獲的組。

$ {name} - 按名稱捕獲的組。

$$ - $ literal。

$& - 整場比賽。

$` - 匹配前的輸入字符串。

$' - 匹配后的輸入字符串。

$ + - 最后一組被捕獲。

$ _ - 整個輸入字符串。

只需使用${groupName}替換

[TestCase("First Second", "Second First")]
public void NumberedReplaceTest(string input, string expected)
{
    Regex regex = new Regex("(?<firstMatch>First) (?<secondMatch>Second)");
    Assert.IsTrue(regex.IsMatch(input));
    string replace = regex.Replace(input, "${secondMatch} ${firstMatch}");
    Assert.AreEqual(expected, replace);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM