我的字符串类似于下面的字符串:
string str1 = "test_20150505";
string str2 = "test_20150505_yts";
string str3 = "test_all";
string str4 = "test";
以下正则表达式代码提取字符串20150505
和字符串str1
&的日期(str3
)。 <{1}}字符串返回空,这也没关系。
但是,我需要更改什么才能提取字符串str4
的日期?
str2
答案 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();
然后,您可以解析日期,例如:
DateTime datetime;
DateTime.TryParseExact(results[0], "yyyyMMdd", new System.Globalization.CultureInfo("en-us"), System.Globalization.DateTimeStyles.None, out datetime);
答案 1 :(得分:0)
你的正则表达式模式的最后一部分似乎是一个错字。使用
string d = Regex.Match(str1, "^(?:.*_)?([0-9]{8})(?:_.*)?$").Groups[1].Value.ToString();
代替。