在正则表达式匹配完成后删除字符串中不匹配的部分-c#

在正则表达式匹配完成后删除字符串中不匹配的部分-c#,c#,regex,C#,Regex,我有一个这样的正则表达式 String ddmmyyyy = @"[0-9]{1,4}\p{P}[0-9]{1,2}\p{P}[0-9]{1,4}"; Regex rgx = new Regex(ddmmyyyy, RegexOptions.IgnoreCase); MatchCollection matches = rgx.Matches(mystring); if (matches.Count > 0) Console.Writeline("Date : " + mystrin

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

String ddmmyyyy = @"[0-9]{1,4}\p{P}[0-9]{1,2}\p{P}[0-9]{1,4}";
Regex rgx = new Regex(ddmmyyyy, RegexOptions.IgnoreCase);
MatchCollection matches = rgx.Matches(mystring);
if (matches.Count > 0)
   Console.Writeline("Date : " + mystring);
在我的程序中,我遇到了一个字符串“animal14-07-2014prefer”(mystring)。当我使用以下代码检查任何匹配时,如下所示

String ddmmyyyy = @"[0-9]{1,4}\p{P}[0-9]{1,2}\p{P}[0-9]{1,4}";
Regex rgx = new Regex(ddmmyyyy, RegexOptions.IgnoreCase);
MatchCollection matches = rgx.Matches(mystring);
if (matches.Count > 0)
   Console.Writeline("Date : " + mystring);
但在这里,我不仅仅得到字符串的“匹配”部分,即“14-07-2014”,而是完整的字符串

有没有办法从整个字符串中去掉“匹配”部分?请帮助。

只需执行以下操作:

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);
匹配后必须使用
才能获得匹配的零件。如果要匹配多个日期,请使用
匹配()

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()

MatchCollection
是一个
match
对象的数组(遗憾的是,在通用之前,它被公开为IEnumerable,或者只是普通的
object
s)。每个
匹配
对象都有一个可以读取的
字段

foreach (Match match in matches.Cast<Match>())
{
  string value = match.Value;

  // handle match value
}

MatchCollection
是一个
Match
对象的数组(遗憾的是,在泛型之前,它被公开为IEnumerable,或者只是普通的
object
s)。每个
匹配
对象都有一个可以读取的
字段

foreach (Match match in matches.Cast<Match>())
{
  string value = match.Value;

  // handle match value
}

许多初学者错误地认为函数实际上会影响输入参数或调用实例。对于字符串函数,大多数情况下并非如此。类似于
mystring.Trim()的语句
不会以任何方式影响mystring。类似地,
rgx.Matches(mystring)
mystring
没有任何影响。许多初学者错误地认为函数实际上会影响输入参数或调用实例。对于字符串函数,大多数情况下并非如此。类似于
mystring.Trim()的语句
不会以任何方式影响mystring。类似地,
rgx.Matches(mystring)
mystring
没有任何影响。谢谢你,阿米特。我不知道“价值”部分!:-)字符串monthdateyear=@“[a-z]{1,3}\p{p}[0-9]{1,2}\p{p}[0-9]{1,4}”。对于这个模式和字符串-'Jan.13.2014',您建议的代码给了我一个空字符串。为什么?明白了!我们可以使用MatchCollection对象,按照您建议的方式获取值,而不是这样做。值的优点是,我们可以使用RegEx类将RegEx指定为不区分大小写,就像我所做的那样。谢谢它现在工作得很好。谢谢你,阿米特。我不知道“价值”部分!:-)字符串monthdateyear=@“[a-z]{1,3}\p{p}[0-9]{1,2}\p{p}[0-9]{1,4}”。对于这个模式和字符串-'Jan.13.2014',您建议的代码给了我一个空字符串。为什么?明白了!我们可以使用MatchCollection对象,按照您建议的方式获取值,而不是这样做。值的优点是,我们可以使用RegEx类将RegEx指定为不区分大小写,就像我所做的那样。谢谢它现在运转得很好。