从字符串中提取年份,检查是否成功

时间:2016-08-31 13:38:39

标签: ruby-on-rails ruby string

我想检查是否在字符串中找到了一年。像

这样的东西
if string.scan(/\d{4}/).first == TRUE

例如一个字符串看起来像#34; 2007年发生了3次地震"

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

如果要匹配独立的4位数字符串,可以考虑使用带有字边界的正则表达式:

!('It is 2016 now.' =~ /\b\d{4}\b/).nil? # => true

或 - 更真实的样本用法:

if string =~ /\b\d{4}\b/ 

\b\d{4}\b匹配任何前面或后面没有单词字符(数字,字母或下划线)的4位数字,因此02312345中不会匹配。

此外,如果你想精确到当前世纪或20世纪,你可以使用/\b(?:19|20)\d{2}\b/正则表达式。

要提取数字,请使用s[/\b\d{4}\b/]

'It was in 2015/16.'[/\b\d{4}\b/] # => 2015

请参阅Ruby demo