我对正则表达式很陌生,如果这是一个非常初级的问题,请见谅。
我有一个正则表达式... 我想要做的是检查一个字符串是否完全匹配正则表达式,而不是匹配字符串的任何子集。
例如...
如果我的正则表达式正在寻找\sA\s*的匹配,那么如果它与比较的字符串是" A ",它应该返回一个匹配,但如果它与字符串" A B"进行比较,它不应该返回一个匹配。
任何帮助都将不胜感激。我用C#编程。
通常会使用起始锚点和结束锚点符号^
和$
:
^\s*A*\s*$
请记住,如果你的正则表达式引擎支持多行模式,那么这可能也会捕获跨越多行的字符串,只要其中一行与该正则表达式匹配(因为^
锚定在任何换行符或字符串开头之后,而$
在任何换行符或字符串结尾之前)。如果你只对单行运行正则表达式,那就不会有问题。
如果你想确保多行输入仅是由你的模式构成的单行,则可以使用\A
和\Z
(如果被支持),它们意味着忽略新行的开头和结尾,只匹配字符串的开头和结尾。
如果您不能或不想更改正则表达式,则还可以使用:
var match = regex.Match(pattern);
if (match.Success && match.Length == pattern.Length)
{
// TODO: Entire string was matched, and not a sub string
}
\A
(在开头)和\z
(在结尾)必须被使用以确保整个字符串被匹配。 - Wiktor Stribiżew