0

我正在尝试获取文本中的 URL 并将 URL 写入文件。

我使用这段代码:

message = $stdin.read 
test = message.match('http:\/\/(.*?)$')

File.open('test.txt', 'w') do |f2|  

f2.puts "#{test}"
end  

此文本位于消息变量中:

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

但是在文本文件中出现了这个:

http://server.nitrado.net/deu/donations/verify/18074/4f8b31ac-5400-424=

任何想法我做错了什么?

4

1 回答 1

0

我不认为您阅读的消息具有您认为的内容。从匹配中取出$stdin并使用字符串文字,我看到了预期的结果:

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"

匹配结果的最终=结果向我表明输入可能是某种格式,会中断长行,以 . 结尾=。例如:

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.匹配除换行符以外的任何字符[^\n],这解释了为什么捕获在使用此输入的地方停止。

于 2013-05-13T21:37:51.537 回答