我有像这样的正则表达式
String ddmmyyyy = @"[0-9]{1,4}\p{P}[0-9]{1,2}\p{P}[0-9]{1,4}";
在我的程序中,我遇到一个字符串,它是“animal14-07-2014preserve”(mystring)。当我使用以下简单的代码来检查任何匹配时,比如
Regex rgx = new Regex(ddmmyyyy, RegexOptions.IgnoreCase);
MatchCollection matches = rgx.Matches(mystring);
if (matches.Count > 0)
Console.Writeline("Date : " + mystring);
但是在这里,我不仅仅是字符串的“匹配”部分,即“14-07-2014”,而是完整的字符串。
有没有办法让整个字符串中的'匹配'部分?请帮忙。
答案 0 :(得分:3)
这样做:
string mystring = "animal14-07-2014preserve";
String ddmmyyyy = @"[0-9]{1,4}\p{P}[0-9]{1,2}\p{P}[0-9]{1,4}";
Console.WriteLine(Regex.Match(mystring, ddmmyyyy).Value);
您必须在匹配后使用Value
才能获得匹配的部分。如果您想匹配多个日期,请使用Matches()
。
答案 1 :(得分:2)
MatchCollection
是Match
个对象的数组(遗憾的是,从通用前的日子开始,因此它被公开为IEnumerable,或者只是普通的object
)。每个Match
对象都有一个Value
字段,您可以阅读。
foreach (Match match in matches.Cast<Match>())
{
string value = match.Value;
// handle match value
}
你也可以使用Regex.Match
作为一个整体引用匹配的部分,并获取一个Match
对象而不是集合
Match match = Regex.Match(input, pattern);
string value = match.Value