Change captured values in a regexp

Hi everyone!
Supposing there is a string like this:
Oct 22 06:25:35 machine kernel: [271182.956004] IN= OUT=eth0
SRC=10.8.0.248 DST=192.5.5.241

I am using the following regexp to capture time:
/Oct (\d{2}) (\d{2}:\d{2}:\d{2})/

How can I alter the hour value only and keep it in the result returned?
I want to decrease 3 hours.
Instead of #<MatchData “Oct 22 06:25:35” 1:“22” 2:“06:25:35”>
It should return #<MatchData “Oct 22 06:25:35” 1:“22” 2:“03:25:35”>

On Oct 26, 8:47am, Bruno S. [email protected] wrote:

Instead of #<MatchData “Oct 22 06:25:35” 1:“22” 2:“06:25:35”>
It should return #<MatchData “Oct 22 06:25:35” 1:“22” 2:“03:25:35”>


Posted viahttp://www.ruby-forum.com/.

What is going to happen when you subtract 3 hours from a date
like this:
Oct 01 02:25:35

require ‘date’
==>true
t=DateTime.parse(“Oct 01 02:25:35”) - Date.time_to_day_fraction(3,0,0)
==>#<DateTime: 42430529827/17280,0,2299161>
t.strftime("%b %d %H:%M:%S")
==>“Sep 30 23:25:35”

On Tue, Oct 26, 2010 at 4:47 PM, Bruno S. [email protected] wrote:

Instead of #<MatchData “Oct 22 06:25:35” 1:“22” 2:“06:25:35”>
It should return #<MatchData “Oct 22 06:25:35” 1:“22” 2:“03:25:35”>

That’s not a job for regular expressions. You need to handle this by
yourself. Once you have the hour match, convert it into a Time object
(see http://ruby-doc.org/core/classes/Time.html#M000305) and then
offset it as you need.

HTH,
Ammar

On 26.10.2010 15:47, Bruno S. wrote:

It should return #<MatchData “Oct 22 06:25:35” 1:“22” 2:“03:25:35”>
You don’t want to mess with what the regexp match returns. Rather you
need to process results afterwards. And please also consider the other
comments.

Kind regards

robert

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs