我想检查是否在字符串中找到了一年。像
这样的东西if string.scan(/\d{4}/).first == TRUE
例如一个字符串看起来像#34; 2007年发生了3次地震"
有什么建议吗?
答案 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