“$ / Folder1 / Folder2 / Folder3 / File.xml”的正则表达式

时间:2012-11-18 17:44:58

标签: c# .net regex

如果我想验证$/Folder1/Folder2/Folder3/File.xml始终以$开头并始终以xml

结尾,那么我的正则表达式应该是什么样子?
"$/Folder1/Folder2/Folder3/File.xml"
Pass

"$/Folder1/Folder2/Folder3/File.xm"
Fail

"$/Folder1/Folder2/Folder3/File.py"
Fail

"A/Folder1/Folder2/Folder3/File.xml"
Fail

编辑......所以...正确的正则表达式是......

"^\$.*xml$"

执行正则表达式检查器后的方法看起来像......

public bool ValidateConfigPath(string config)
    {
        var match = Regex.Match(config, @"^\$.*xml$", RegexOptions.IgnoreCase);

        return match.Success;
    }

我所有的单元测试都通过......

[TestMethod]
    public void ValidateConfigPath_InCorrect1()
    {
        var t = new TfsWrapper();
        var isValid = t.ValidateConfigPath("$/Quantz/Main/CSS Calculator/main.py");
        Assert.IsFalse(isValid);
    }

    [TestMethod]
    public void ValidateConfigPath_InCorrect2()
    {
        var t = new TfsWrapper();
        var isValid = t.ValidateConfigPath("C:/Quantz/Main/CSS Calculator/main.xml");
        Assert.IsFalse(isValid);
    }

    [TestMethod]
    public void ValidateConfigPath_Correct()
    {
        var t = new TfsWrapper();
        var isValid = t.ValidateConfigPath("$/Quantz/Main/CSS Calculator/main.xml");
        Assert.IsTrue(isValid);
    }

3 个答案:

答案 0 :(得分:2)

Have you read a tutorial?

^\$.*xml$

^是字符串的开头。 \$是一个文字$字符。 .*是0或更多的任意字符(事实上,没有换行符,但在输入示例中似乎并不重要)。 xml实际上只是xml$是字符串的结尾。

答案 1 :(得分:2)

如果没有严格要求使用正则表达式,我建议更直接的方法是简单地检查起始和结束字符:

string.startswith("$") and string.endswith("xml")

通过上述内容,任何人都可以清楚地了解其意图,包括不理解正则表达式的人。

答案 2 :(得分:1)

试试这个: -

  ^\$.*xml$

查看此link了解详情