如何在C#中检查正则表达式是否与整个字符串匹配?

8

我对正则表达式很陌生,如果这是一个非常初级的问题,请见谅。

我有一个正则表达式... 我想要做的是检查一个字符串是否完全匹配正则表达式,而不是匹配字符串的任何子集。

例如...

如果我的正则表达式正在寻找\sA\s*的匹配,那么如果它与比较的字符串是" A ",它应该返回一个匹配,但如果它与字符串" A B"进行比较,它不应该返回一个匹配。

任何帮助都将不胜感激。我用C#编程。


1
你可以在 http://regexpal.com/ 上尝试在线正则表达式测试器,最简单的C#正则表达式模式应该可以被正确测试。 - o.k.w
实际上,\A(在开头)和\z(在结尾)必须被使用以确保整个字符串被匹配。 - Wiktor Stribiżew
2个回答

17

通常会使用起始锚点和结束锚点符号^$

^\s*A*\s*$

请记住,如果你的正则表达式引擎支持多行模式,那么这可能也会捕获跨越多行的字符串,只要其中一行与该正则表达式匹配(因为^锚定在任何换行符或字符串开头之后,而$在任何换行符或字符串结尾之前)。如果你只对单行运行正则表达式,那就不会有问题。

如果你想确保多行输入仅是由你的模式构成的单行,则可以使用\A\Z(如果被支持),它们意味着忽略新行的开头和结尾,只匹配字符串的开头和结尾。


0

如果您不能或不想更改正则表达式,则还可以使用:

var match = regex.Match(pattern);
if (match.Success && match.Length == pattern.Length)
{
    // TODO: Entire string was matched, and not a sub string
}

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