如果我有字符串
string =“Robert Lee Frost(1874年3月26日 - 1963年1月29日)是美国人 诗人“
从中提取日期的最佳方法是什么?
答案 0 :(得分:2)
不确定regexp在这里是否最好 - 但您可以尝试以下方法:
((January|February|March|April|May|June|July|August|September|October|November|December)\s(\d?\d),\s(\d{4}))
这应该提取整个日期+日期的3个组成部分(月,日,年),并将它们保存在正则表达式变量中。您可以在Rubular
中进行试验str = "Robert Lee Frost (March 26, 1874 – January 29, 1963) was an American poet"
pattern = /((January|February|March|April|May|June|July|August|September|October|November|December)\s(\d?\d),\s(\d{4}))/
dates = str.scan(pattern).each do |matches|
Date.parse(matches[0])
end
dates
将保留出生/已故的日期。警惕不匹配。
答案 1 :(得分:0)
@tamersalama打败了我。
((January|February|March|April|May|June|July|August|September|October|November|December) [0-9]{2}, [0-9]{4})