需要从字符串到正则表达式获取日期

时间:2015-05-28 09:47:02

标签: c# regex

我的字符串类似于下面的字符串:

string str1 = "test_20150505";
string str2 = "test_20150505_yts";
string str3 = "test_all";
string str4 = "test";

以下正则表达式代码提取字符串20150505和字符串str1&amp;的日期(str3)。 <{1}}字符串返回空,这也没关系。

但是,我需要更改什么才能提取字符串str4的日期?

str2

2 个答案:

答案 0 :(得分:2)

您可以检查大约8位数字的可选_

(?<=_|\b)[0-9]{8}(?=_|\b)

请参阅demo

var rx = new Regex(@"(?<=_|\b)[0-9]{8}(?=_|\b)");
var inputs = "test_20150505\n\test_20150505_yts\ntest_all\ntest";
var results = rx.Matches(inputs).OfType<Match>().Select(p => p.Value).ToList();

enter image description here

然后,您可以解析日期,例如:

DateTime datetime;
DateTime.TryParseExact(results[0], "yyyyMMdd", new System.Globalization.CultureInfo("en-us"), System.Globalization.DateTimeStyles.None, out datetime);

enter image description here

答案 1 :(得分:0)

你的正则表达式模式的最后一部分似乎是一个错字。使用

string d = Regex.Match(str1, "^(?:.*_)?([0-9]{8})(?:_.*)?$").Groups[1].Value.ToString();

代替。