我有一个类似下面的内容,我想只选择年份信息作为字符串值。
给定此输入字符串:
例如,主要问题之一是观察者动态 假设比状态反馈控制器快, 这会导致数值上的困难(Astrom和Wittenmark,1997)。 更重要的是,当激活流程约束时, 闭环控制性能将明显恶化 明显地看到,非线性主导着控制 系统(Tenny,Rawlings和Wright,2004)。因此,这是必要的 开发能够解决上述问题的方法。
我想提取1997
和2004
。
注意:
答案 0 :(得分:1)
var years = Regex.Matches(input, @"\D(\d{4})\D")
.Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToArray();
答案 1 :(得分:0)
好吧,我建议您使用以下正则表达式。
((19|20)\d{2})
或
\b((19|20)\d{2})\b
在.NET中,还支持命名组,因此以下也是匹配模式的便捷方式。
\b(?<Years>(19|20)\d{2})\b
注意:此正则表达式搜索四位数,前两位必须为19
或20
。
如果可以在早些年可以包括它们
\b(?<Years>(17|18|19|20)\d{2})\b
答案 2 :(得分:0)
你的年龄有限吗?意思是,没有比1900年更早的了?还是1800?这会让你更精确一些。
Regex regex = new Regex(@" (19|20)\d\d\))")
MatchCollection years = regex.Matches(your_input);
我认为正则表达式将匹配20世纪或2000年代的任何日期,它们具有前面的空格,并以a结尾。
然后,您可以遍历MatchCollection,获取匹配的所有实例。
答案 3 :(得分:0)
试试这个\d\d\d\d[\)\]\.]
正则表达式。
这会搜索以)
或]
或.
结尾的所有4位数字。
答案 4 :(得分:0)
您可以使用正则表达式。像^[12][0-9]{3}$
之类的东西会验证您的年份。
Match match = Regex.Match(input, "^[12][0-9]{3}$");