ruby - get a match with regexp and pass it to a file doesn't work properly -
i'm trying url in text , write url file.
i use code:
message = $stdin.read test = message.match('http:\/\/(.*?)$') file.open('test.txt', 'w') |f2| f2.puts "#{test}" end
this text in message variable:
die spende muss vom empfänger sowie sender per e-mail bestätigt werden. um die spende zu bestätigen klicke auf folgenden link: http://server.nitrado.net/deu/donations/verify/18074/4f8b31ac-5400-424f-917c-4dcec3529f03
but in textfile appears this:
http://server.nitrado.net/deu/donations/verify/18074/4f8b31ac-5400-424=
any ideas i'm doing wrong?
i don't think message read has contents think has. taking out read $stdin
, using string literal instead, see expected results match:
message = "die spende muss vom empfänger sowie sender per e-mail bestätigt werden. um die spende zu bestätigen klicke auf folgenden link: http://server.nitrado.net/deu/donations/verify/18074/4f8b31ac-5400-424f-917c-4dcec3529f03" => "die spende muss vom empfänger sowie sender per e-mail bestätigt werden. um die spende zu bestätigen klicke auf folgenden link:\nhttp://server.nitrado.net/deu/donations/verify/18074/4f8b31ac-5400-424f-917c-4dcec3529f03" test = message.match('http:\/\/(.*?)$') => #<matchdata "http://server.nitrado.net/deu/donations/verify/18074/4f8b31ac-5400-424f-917c-4dcec3529f03" 1:"server.nitrado.net/deu/donations/verify/18074/4f8b31ac-5400-424f-917c-4dcec3529f03"> "#{test}" # or test.to_s => "http://server.nitrado.net/deu/donations/verify/18074/4f8b31ac-5400-424f-917c-4dcec3529f03"
the final =
on matched result indicates me input may in format breaks long lines, ending them =
. eg:
message = <<eom die spende muss vom empfänger sowie sender per e-mail bestätigt werden= . um die spende zu bestätigen klicke auf folgenden link: http://server.nitrado.net/deu/donations/verify/18074/4f8b31ac-5400-424= f-917c-4dcec3529f03 eom test = message.match('http:\/\/(.*?)$').to_s => "http://server.nitrado.net/deu/donations/verify/18074/4f8b31ac-5400-424="
regexp meta-char .
matches character except newline [^\n]
explains why capture stops input.
Comments
Post a Comment