【问题标题】:Can I add a regular expression into a .Net Assertion?我可以将正则表达式添加到 .Net 断言中吗?
【发布时间】:2014-09-01 11:35:42
【问题描述】:

我正在尝试从一组页面中提取页面源并对结果运行断言,这是一个测试,用于检查我们是否正在抓取我们网站中的特定页面。有时结果会返回 URL 字符串的不同大小写,我想在我正在检查页面源的断言中解释这一点。这可能是错误的方法,但我想知道是否有办法将 .Net 正则表达式命令添加到断言文本中。我有这个断言:

Assert.IsTrue(driver.PageSource.Contains("/explore"));

但是有没有办法确保我可以捕捉到探索、探索或探索?我虽然可以在这里使用 (?i) 但这似乎不起作用。我更习惯 Perl 和它的正则表达式功能,但是对于 C# 和 .Net,我有点迷失在哪里可以和不能使用内联正则表达式命令。

【问题讨论】:

    标签: c# .net regex


    【解决方案1】:

    安东尼的回答是有效的,你真的不需要正则表达式。但是如果你确实想使用它,你可以使用

    Regex.IsMatch(driver.PageSource, "/explore", RegexOptions.IgnoreCase)
    

    【讨论】:

    • 谢谢,我发现这对于我尝试做的事情更具可读性,并且适用于我需要的情况:Assert.IsTrue(Regex.IsMatch(driver.PageSource, "/explore", RegexOptions .IgnoreCase));
    【解决方案2】:

    您不需要正则表达式来执行不区分大小写的检查。使用IndexOf 并比较结果是否大于-1。 IndexOf 具有允许您指定大小写是否重要的​​重载。像

    bool containsExplore = driver.PageSource.IndexOf("/explore", StringComparison.InvariantCultureIgnoreCase) > -1;
    Assert.IsTrue(containsExplore);
    

    【讨论】:

    • 非常酷,我可以看到在某些情况下我可能需要这个,但我认为我永远不会想出这个
    【解决方案3】:

    试试:

    RegEx.Match("string", "regexp", RegExOptions.IgnoreCase).Success
    

    【讨论】:

      【解决方案4】:

      如何使用

      StringAssert.Matches(string, regex);
      

      在你的情况下,这将转化为

      StringAssert.Matches("drive.PageSource", "\/explore");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-11
        • 1970-01-01
        • 1970-01-01
        • 2010-09-29
        • 2021-08-29
        • 2012-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多