我可以将正则表达式添加到 .Net 断言中吗?

3

我正在尝试从一组页面中提取页面源代码,并对结果进行断言,这是一个测试,用于检查我们是否在网站上爬取特定页面。有时结果返回的URL字符串大小写不同,我想在检查页面源代码的断言中考虑到这一点。这可能不是正确的方法,但我想知道是否有一种方法可以将.Net正则表达式命令添加到断言文本中。我已经将此作为一个断言:

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

但是有没有一种方法可以确保我能够捕获explore、Explore或EXPLORE?我认为我可以在这里使用 (?i),但似乎并不起作用。我更熟悉Perl及其正则表达式功能,但对于C#和.Net,我对哪些地方可以使用内联正则表达式命令感到有些困惑。

4个回答

4

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

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

谢谢,我觉得这个更易读,而且它也适用于我所需要的情况:Assert.IsTrue(Regex.IsMatch(driver.PageSource, "/explore", RegexOptions.IgnoreCase));。 - MichaelF

2

您不需要使用正则表达式来执行不区分大小写的检查。使用 IndexOf 并比较结果是否大于-1。 IndexOf 有重载,允许您指定大小写是否重要。类似下面这样:

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

非常好,我可以看到在一些情况下我可能需要它,而且我认为我永远不会想出这个。 - MichaelF

2

尝试:

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

1
如何使用?
StringAssert.Matches(string, regex);

在您的情况下,这将被翻译为:
StringAssert.Matches("drive.PageSource", "\/explore");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接