How to match last word?

C

camenix

Hi,all
I has a script to match 'Transfer dbf to SQLServer', the last
comand successfully ended.But I found no way to match last
command.Whoever can help me?

main.rb
string='
Program begin at 2006-11-05T15:01:13+0800
Change image name to lower begin at 2006-11-05T15:01:13+0800
Change image name to lower end at 2006-11-05T15:01:14+0800
Transfer dbf to SQLServer begin at 2006-11-05T15:01:14+0800
Transfer dbf to SQLServer end at 2006-11-05T15:01:15+0800
Modify Tables begin at 2006-11-05T15:01:15+0800
'
re=/\n{0,1}(.+?)\s+(end\s+at)(.+?)\n/i
re.match(string)
puts $1,$2,$3,$4

The string is came from a file,so the "\n" maybe ommited,but
/\n{0,1}(.+?)\s+(end\s+at)(.+?)(\n|\Z)/i didn't work.
This form of regular expresion always match 'Change image name to
lower'.($2)
 
R

Robert Klemme

camenix said:
Hi,all
I has a script to match 'Transfer dbf to SQLServer', the last
comand successfully ended.But I found no way to match last
command.Whoever can help me?

main.rb
string='
Program begin at 2006-11-05T15:01:13+0800
Change image name to lower begin at 2006-11-05T15:01:13+0800
Change image name to lower end at 2006-11-05T15:01:14+0800
Transfer dbf to SQLServer begin at 2006-11-05T15:01:14+0800
Transfer dbf to SQLServer end at 2006-11-05T15:01:15+0800
Modify Tables begin at 2006-11-05T15:01:15+0800
'
re=/\n{0,1}(.+?)\s+(end\s+at)(.+?)\n/i
re.match(string)
puts $1,$2,$3,$4

The string is came from a file,so the "\n" maybe ommited,but
/\n{0,1}(.+?)\s+(end\s+at)(.+?)(\n|\Z)/i didn't work.
This form of regular expresion always match 'Change image name to
lower'.($2)
Program begin at 2006-11-05T15:01:13+0800
Change image name to lower begin at 2006-11-05T15:01:13+0800
Change image name to lower end at 2006-11-05T15:01:14+0800
Transfer dbf to SQLServer begin at 2006-11-05T15:01:14+0800
Transfer dbf to SQLServer end at 2006-11-05T15:01:15+0800
Modify Tables begin at 2006-11-05T15:01:15+0800
'Program
Change image name to lower
Change image name to lower
Transfer dbf to SQLServer
Transfer dbf to SQLServer
Modify Tables
=> nil

Not the most efficient RX but seems to work - at least according to what I
gather from your posting.

Kind regards

robert
 
C

camenix

Change image name to lower begin at 2006-11-05T15:01:13+0800
Change image name to lower end at 2006-11-05T15:01:14+0800
Transfer dbf to SQLServer begin at 2006-11-05T15:01:14+0800
Transfer dbf to SQLServer end at 2006-11-05T15:01:15+0800
Modify Tables begin at 2006-11-05T15:01:15+0800
'>> puts string.scan(%r{^(.*)\s+(?:begin|end) at .*$})Program
Change image name to lower
Change image name to lower
Transfer dbf to SQLServer
Transfer dbf to SQLServer
Modify Tables
=> nil

Not the most efficient RX but seems to work - at least according to what I
gather from your posting.

Kind regards

robert
It worked!
re=/^(.+?)\s+(end\s+at)(.+?)$/i
puts s.match(re)
result:Change image name to lower end at 2006-11-05T15:01:14+0800
$2==Change image name to lower
puts s.scan(re)
result:
Change image name to lower
end at
2006-11-05T15:01:14+0800
Transfer dbf to SQLServer
end at
2006-11-05T15:01:15+0800
$2==Transfer dbf to SQLServer

appreciate your help.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,009
Latest member
GidgetGamb

Latest Threads

Top