识别字符串中的日期范围

时间:2014-11-15 05:56:52

标签: c# regex

我有一个包含以下字符串的类型字符串列表:

  

我在1985年建造了这辆车

     

罗纳德拥有该车辆(1901年12月5日 - 1966年12月15日)在巴黎

     

于2001年12月5日破裂

     

我也拥有这些车辆(马自达RX8和丰田普锐斯)

要提取表明车辆发生故障的日期的第3个字符串,我在运行foreach循环中的句子列表后使用以下代码,其中'句子'是循环变量

var dateString = Regex.Match(sentence, @"broke ([^\)]+)").Groups[1].ToString();

但是,如果我要识别第二个字符串,它表示括号内的一系列日期,我如何使用正则表达式仅提取括号内的日期范围? (不包括括号),使得输出仅为:

  

1901年12月5日 - 1966年12月15日

1 个答案:

答案 0 :(得分:0)

resultString = Regex.Match(subjectString, 
    @"(?<=\()         # Make sure the previous character is a (
    \w+\s+\d+,\s+\d+  # Match a date
    \s*\p{Pd}\s*      # Match a dash, surrounded by optional whitespace
    \w+\s+\d+,\s+\d+  # Match a date
    (?=\))            # Make sure the following character is a )", 
    RegexOptions.IgnorePatternWhitespace).Value;

将提取完全符合指定格式的日期范围。

测试live on regex101.com