我正在尝试在文本中获取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=
任何想法我做错了什么?
答案 0 :(得分: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]
之外的任何字符,这解释了为什么捕获停止在此输入的位置。