我是正则表达式的新手,很抱歉,如果这是一个非常棒的问题。
我有一个正则表达式...我想要做的是检查一个字符串是否与regex表达式完全匹配,而regex表达式不匹配字符串的任何子集。
例如......
如果我的正则表达式正在寻找\ s A \ s *的匹配,那么它应该返回一个匹配项,如果它与之比较的字符串是“A”但是如果它与字符串“AB”它不应该返回匹配。
任何帮助将不胜感激?我用C#编码。
答案 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
}