我有一个包含以下字符串的类型字符串列表:
我在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日
答案 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;
将提取完全符合指定格式的日期范围。