C# 正则表达式子字符串与模式匹配

C# 正则表达式子字符串与模式匹配,c#,regex,string,C#,Regex,String,我有一个像这样的正则表达式 string _pattern = @"\d{4}-\d{2}\/\d{2}\/\d{4}"; 如何检查字符串值是否完全属于此模式或是此模式的一部分 例如,如果我发送 string someString= "0007-08/02/2012"; Match m = Regex.Match(someString, _pattern); //i get a full match 但是如果我送 str

我有一个像这样的正则表达式

    string _pattern = @"\d{4}-\d{2}\/\d{2}\/\d{4}";
如何检查字符串值是否完全属于此模式或是此模式的一部分

例如,如果我发送

        string someString= "0007-08/02/2012";
        Match m = Regex.Match(someString, _pattern);
        //i get a full match
但是如果我送

        string someString="0007-"
        //how do i check if this string value matches that pattern and is a substring.
除了使用正则表达式,还有其他方法吗

谢谢,
csk

如果要匹配模式的任何子字符串,必须在所有选项中添加“?”,如下所示:

string _pattern = @"(\d{4})?(-)?(\d{2})?(\/)?(\d{2})?(\/)?(\d{4})?";
此模式将匹配原始模式的任何子字符串

i.e.: 
0007-08/02/2012
0007-
08/02/2012
08/
/02/2012

所有这些都与模式匹配。

我的建议是用已知匹配模式的字符串后缀
someString
,并对其进行测试:

string _pattern = @"\d{4}-(\d{2}\/\d{2}\/\d{4})?"
string good=“0007-08/02/2012”;
bool isMatch=Regex.Match(someString+good.Substring(someString.Length))\u模式)

您的第二个示例与模式不匹配。是的,您是对的()如果我的答案中缺少表达式,我将对其进行编辑。不过,这允许进行许多其他匹配。像“-/21/”或“2345/”这样的东西在这里会匹配。酷!我分别用“?”和大括号“()”进行了尝试。您的解决方案很有效。谢谢。@LTAcosta为了避免这种匹配,我根据需要将它们分组,如“@”(\d{4}-)?(\d{2}\/\d{2}\/\d{4}-”,将日期部分与前5个字符分开。是的,这是我的建议,但我不确定您的要求。我不确定你的弦的哪一部分总是出现,哪一部分只是偶尔出现。因为这4个数字与-,所以这4个数字不能正常工作。如果您需要支持这两种情况,您可以|所有可能的场景,或者您也可以使用变更构造。