2014-11-15 159 views
1

我有一个类型的字符串,包含以下字符串列表的日期范围:识别字符串

我建的车辆于1985年

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

它在12月5日打破了,2001年

我拥有这些车辆以及(马自达RX8和丰田Prius)

要提取其中规定在车辆抛锚之日起第三根弦,我使用下面的代码在foreach循环中,其中“一句”是循环变量

var dateString = Regex.Match(sentence, @"broke ([^\)]+)").Groups[1].ToString(); 
运行语句列表后

但是,如果我要确定第二个字符串,其中指出了括号内的日期范围,我如何使用正则表达式来提取括号内的日期范围? (非包含所述支架的),使得输出是仅:

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

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

好记:)谢谢。 @JohnSaunders – Dinuka

回答

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

+0

谢谢先生,但我编辑了一些问题,以便更好地阐明。如果我只想要括号中指定的日期,该怎么办? – Dinuka

+0

@Earthling:你的意思是正则表达式应该避免匹配'马自达等'?你知道日期的确切格式吗? –

+0

是的,先生它总是显示为:(月日,年 - 月日,年) – Dinuka