我有一個包含SQL轉儲行的文件。它的日期格式爲yyyy-mm-dd
(例如:2012-08-13
)用於搜索和替換的Ruby RegEx
我想用一個標記替換所有這些日期,以便將來我可以使用所有以當時日期爲中心的行填充數據庫。
例如
2012-08-13
我想改變存儲爲類似$$MAINDATE$$
2012-08-14
我想$$MAINDATE+1$$
這樣,他們都相對保存到一個日期數據將會在新的創建日期之後有意義。
然後我想迭代文件,並用基於當前參數的新日期替換它們。並根據+1或+100調整日期,或者在幾天後調整日期。
我認爲這場比賽的文本是/\d{4}-\d{2}-\d{2}/
但我怎麼替換與一個新名詞佔用並更換舊的文本匹配的文本?
更新:
我用這個來改變標記回日期..我懷疑它的漂亮,但它的工作
#iterate each line and look for the marker
while (line = infile.gets)
str = line
#replace marker with data modified by the modifier
rules = Hash[str.scan(/(\$\$MAINDATE(\+|\-)\d{1,5}\$\$)/).uniq.collect do |e|
modifyValue = e[0].split(e[1])[1].gsub("$","").to_i
if e[1] == "-" then
modifyValue = modifyValue * -1
end
[e[0], (today + modifyValue).to_s]
end ]
rules.each do |key, value|
str.gsub!(key, value)
end
#write new line to array
finishedText.push str
end
GSUB(/ \ d {4} - \ d {2} - \ d {2} /){|匹配|塊}不能幫你嗎? – godspeedlee 2012-08-13 19:58:33