我正在寻找一种方法来确定单个正则表达式是否匹配整个字符串、字符串的开头或 C# 中的一部分。
在 Java 中,您可以构造一个Matcher
对象,并使用这些方法matches()
检查它是否与整个输入匹配,lookingAt()
查看它是否与输入的开头匹配,并find()
查看字符串中是否有任何匹配.
在 .NET 中,我可以使用Match.Success
来查看是否有任何匹配项,并检查Match.Index
和Match.Length
满足上述条件。
问题是,如果找到较小的匹配项,它不会尝试匹配整个输入。例如,如果将输入“1234”呈现给 Regex @"\d{2}|\d{4}"
,它将匹配前两位数字。
在这种情况下,我需要Regex
使用该模式构建另一个@"^(\d{2}|\d{4})$"
以测试整个输入,然后测试另一个以查看它是否与开头匹配。
有没有办法告诉同一个Regex
类更喜欢整个输入匹配,这样我就不需要为此创建(和编译)另一个正则表达式?
编辑:问题不在于模式,这只是一个例子来说明我的意思。