在数组中存储正则表达式模式字符串

时间:2013-09-17 14:09:30

标签: c# regex string

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

根据评论,我的初步问题不够明确。这是一个单元测试,可以准确地解释我尝试做什么。

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

        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);      

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

我希望问题变得更清楚。

我认为我太复杂了。我不熟悉所有Regex功能?

2 个答案:

答案 0 :(得分:1)

我认为这不是你的问题 - 双斜线是 VS调试器的工件等同于你的逐字字符串。

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

alt text

答案 1 :(得分:1)

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