0

我有一些正则表达式模式字符串,我想将它们传递给数组(或其他集合)中的其他方法。

根据评论,我最初的问题还不够清楚。这是一个单元测试,它准确地解释了我尝试做的事情。

简而言之,我正在尝试用另一个正则表达式模式替换子字符串(基于正则表达式模式)。

        var mainPattern = @"\{[\w]*\}";
        string replacePattern = @"\d{4}";

        var patternArray = new string[] { replacePattern };
        // patternArray[0] == "\\d{4}"

        string input = "fd/{ddf}/dfdf";
        string expected = @"fd/\d{4}/dfdf";

        var match = Regex.Match(input, mainPattern);
        // match.Value == "{ddf}"
        var output = Regex.Replace(input, match.Value, patternArray[0]);
        // output == "fd/\\d{4}/dfdf"

        Assert.AreEqual(expected, output);      

问题出在包含双反斜杠的最终输出中(因为这就是替换字符串的样子)。

我希望问题变得更清楚。

我觉得我太复杂了。我不熟悉所有正则表达式功能?

4

2 回答 2

1

我不认为这是你的问题 - 双斜杠是VS 调试器的工件,相当于你的逐字字符串。

如果单击“文本可视化器”的小放大镜,您会看到它实际上没有双斜线。

替代文字

于 2013-09-17T14:25:03.133 回答
1

尽管看起来很奇怪,但在我的测试中,它就像一种魅力。您使用的是哪个版本的 .NET 和 Visual Studio?

于 2013-09-17T15:11:33.627 回答