C#:在日期上拆分字符串,保持日期完整
我有以下样本数据:C#:在日期上拆分字符串,保持日期完整,c#,regex,C#,Regex,我有以下样本数据: 21/10/2012 blahblah blah blahblah 265 blah 25 22/10/2012 blahblah blah blahblah 10 blah 14 blah 66 NK blahblah blah blahblah 25 我希望输出为以下数据: 21/10/2012 blahblah blah blahblah 265 blah 25 22/10/2012 blahblah blah blahblah 10 blah 14 blah 66
21/10/2012 blahblah blah blahblah 265 blah 25 22/10/2012 blahblah blah blahblah 10 blah 14 blah 66 NK blahblah blah blahblah 25
我希望输出为以下数据:
21/10/2012 blahblah blah blahblah 265 blah 25
22/10/2012 blahblah blah blahblah 10 blah 14 blah 66 NK blahblah blah blahblah 25
我尝试了以下方法:
var regex = new Regex ("(\d{1,2})/(\d{1,2})/(\d{4})");
var matches = regex.Matches(str);//str is given above
foreach(var item in matches)
{
//my logic to do operations
}
这将给出日期数组。如何在日期上拆分字符串?您可以在日期之前在空字符串上拆分字符串。为此,您需要此正则表达式:
string[] arr = Regex.split(str, "(?<!\d)(?=\d{1,2}/\d{1,2}/\d{4})");
它还验证了35/36之类的日期/2012@BhushanFirake. 为了捕获有效日期,您必须构建一个不同的正则表达式,这将是一个复杂的正则表达式。仅在字符类中使用有效数字,而不是
\d
@BhushanFirake。更新的正则表达式,你可以试试。
string[] arr = Regex.split(str, "(?<!\\d)(?=(?:0[1-9]|[1-2][0-9]|[3][01])/(?:0[1-9]|1[0-2])/(?:19[0-9]{2}|2[0-9]{3}))");