如何检查Regex表达式是否与c#中的整个字符串匹配?

时间:2010-01-10 05:08:57

标签: c# regex

我是正则表达式的新手,很抱歉,如果这是一个非常棒的问题。

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

例如......

如果我的正则表达式正在寻找\ s A \ s *的匹配,那么它应该返回一个匹配项,如果它与之比较的字符串是“A”但是如果它与字符串“AB”它不应该返回匹配。

任何帮助将不胜感激?我用C#编码。

2 个答案:

答案 0 :(得分:16)

您通常会使用起始端锚点^$

^\s*A*\s*$

请记住,如果你的正则表达式引擎支持多行,这也可以捕获跨越多行的字符串,只要其中一行符合正则表达式(从^开始,然后在任何换行符或字符串后锚定-start和$在任何换行符或字符串结束之前)。如果你只是针对一行运行正则表达式,那就不会有问题了。

如果您想确保多行输入只是由您的模式组成的一行,您可以使用\A\Z(如果支持) - 这些意味着的开头和结尾字符串,无论换行符如何。

答案 1 :(得分:0)

如果你不能或不想改变正则表达式,那么你也可以使用:

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