2012-01-23 14 views
1

は、2つの可能な電子メールの文字列のシナリオです:この文字列から電子メールアドレスを取り出す方法は?ここ

email = "Joe Schmoe <[email protected]>" 
email = "[email protected]" 

私はいつものみ[email protected]をしたいです。

したがって、両方のシナリオを説明する正規表現または方法は何でしょうか?

+0

はあなただけ引き出すことには、有効な電子メールアドレスの一部、または_all_ RFC-有効なものが必要ですか?別の言い方をすると、あなたは_簡易メールアドレスを探していますか? – cdeszaq

+0

私は有効なメールアドレスを探していません。私はAPIに縛られています、そして、それらは私が電子メールアドレスを受け取る2つのフォーマットです。 – Shpigford

答えて

2

あなたのメールアドレスが常に< >になることが分かっている場合は、それらを開始インデックスと終了インデックスとしてサブストリングを作成できます。

0

あなたは余分なライブラリをロードして喜んでいる場合は、これはすでにTMailの宝石で解決されました: http://lindsaar.net/2008/4/13/tip-5-cleaning-up-an-verifying-an-email-address-with-ruby-on-rails

TMail::Address.parse('Mikel A. <[email protected]>').spec 
=> "[email protected]" 
+1

これのためだけにライブラリ全体をロードしたくありません。それは簡単な文字列解析で行うことができると思われます。 – Shpigford

+1

ここでの取り引きは...限られており、かなり一貫性のあるデータセットを解析しているなら、それを解析することができます。 OTOH、あなたがどこから来てもよいデータを解析しているなら、あなたは正しいことを得るのに非常に時間がかかるでしょう - 有効な電子メールアドレスは非常に複雑です。 – DGM

2

ものは2つのだけの形式であれば、正規表現を使用しないでください。単純な文字列解析を使用してください。 「<>」のペアが見つかった場合は、それらの間から電子メールアドレスを取り出し、その文字列が見つからない場合は、その文字列全体を電子メールアドレスとして扱います。

正規表現は必要なときに便利ですが、非常に単純なパターンがあれば、正規表現を読み込んで構文解析して処理するオーバーヘッドが単純な文字列操作よりもはるかに高くなります。 言語の中核である以外の余分なライブラリを読み込むほとんどいつもは別のルートに行くより速くなるでしょう。

関連する問題