私は文書から電子メールアドレスを抽出する短いクラスを作成しています。ここに私のコードは、これまでのところです:Ruby正規表現が一致しません
# Class to scrape documents for email addresses
class EmailScraper
EmailRegex = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
def EmailScraper.scrape(doc)
email_addresses = []
File.open(doc) do |file|
while line = file.gets
temp = line.scan(EmailRegex)
temp.each do |email_address|
puts email_address
emails_addresses << email_address
end
end
end
return email_addresses
end
end
if EmailScraper.scrape("email_tests.txt").empty?
puts "Empty array"
else
puts EmailScraper.scrape("email_tests.txt")
end
マイ「email_tests.txt」ファイルには、そうのようになります。
[email protected]
[email protected]
[email protected]
私はこのスクリプトを実行すると、私が得るすべては「空の配列」プリントアウトです。しかし、irbを起動して上の正規表現を入力すると、電子メールアドレスの文字列が一致し、String.scan関数は各文字列のすべての電子メールアドレスの配列を返します。これはなぜ私のスクリプトではなくirbで動作していますか?
「\ z」と「\ Z」の違いを説明するための+1はそれを知らなかった。 – stema