正则表达式从字符串验证和提取数据

时间:2018-04-09 11:48:28

标签: c# .net regex

我正在尝试在.net c#中创建2个正则表达式。

  1. 验证用户写入的输入具有以下格式一次或多次:
  2. 样品:

    /TEXT;dd-mm-yyyy;TEXT/TEXT;dd-mm-yyyy;TEXT/TEXT;dd-mm-yyyy;TEXT
    

    或者

    /TEXT;dd-mm-yyyy;TEXT
    

    至少应输入一次。 中间部分:dd-mm-yyyy应该是像20-02-1997那样的日月 在TEXT中,不应该有任何/否则我接受正则表达式会失败。

    1. 第二个正则表达式是提取“群组”。
    2. 我尝试过:

      string test = "/TEXT;dd-mm-yyyy;TEXT/TEXT;dd-mm-yyyy;TEXT/TEXT;dd-mm-yyyy;TEXT";
                  string reguexp = "[\\/(\\w+;\\w+;\\w+)+]";
                  foreach (System.Text.RegularExpressions.Match match in System.Text.RegularExpressions.Regex.Matches(test, reguexp))
                  {
                      Console.WriteLine("'{0}' found at index {1}.", match.Value, match.Index);
                  }
      

      但是无法检测每个字符作为匹配项,我想逐个提取“组”/TEXT;dd-mm-yyyy;TEXT以便稍后进行任何额外的数据处理。

      我试着从第二个正则表达式开始,认为一旦我有了这个正则表达式,另一个应该更容易。

      接受任何帮助。 最好的问候

1 个答案:

答案 0 :(得分:-1)

您应该使用群组:

var strRegex = @"(?<date>\d{2}-\d{2}-\d{4})+";
var myRegex = new Regex(strRegex, RegexOptions.None);
var strTargetString = @"01-02-2000;15-03-2018";

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
    var dateString = myMatch.Groups["date"].Value;

    // TODO: Check dateString is valid date (e.g. with DateTime.TryParseExact(...))
}