は、2つの可能な電子メールの文字列のシナリオです:この文字列から電子メールアドレスを取り出す方法は?ここ
email = "Joe Schmoe <[email protected]>"
email = "[email protected]"
私はいつものみが[email protected]
をしたいです。
したがって、両方のシナリオを説明する正規表現または方法は何でしょうか?
は、2つの可能な電子メールの文字列のシナリオです:この文字列から電子メールアドレスを取り出す方法は?ここ
email = "Joe Schmoe <[email protected]>"
email = "[email protected]"
私はいつものみが[email protected]
をしたいです。
したがって、両方のシナリオを説明する正規表現または方法は何でしょうか?
これはあなたの例を渡します。
def find_email(string)
string[/<([^>]*)>$/, 1] || string
end
find_email "Joe Schmoe <[email protected]>" # => "[email protected]"
find_email "[email protected]" # => "[email protected]"
あなたのメールアドレスが常に< >
になることが分かっている場合は、それらを開始インデックスと終了インデックスとしてサブストリングを作成できます。
あなたは余分なライブラリをロードして喜んでいる場合は、これはすでに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]"
ものは2つのだけの形式であれば、正規表現を使用しないでください。単純な文字列解析を使用してください。 「<>
」のペアが見つかった場合は、それらの間から電子メールアドレスを取り出し、その文字列が見つからない場合は、その文字列全体を電子メールアドレスとして扱います。
正規表現は必要なときに便利ですが、非常に単純なパターンがあれば、正規表現を読み込んで構文解析して処理するオーバーヘッドが単純な文字列操作よりもはるかに高くなります。 言語の中核である以外の余分なライブラリを読み込むほとんどいつもは別のルートに行くより速くなるでしょう。
はあなただけ引き出すことには、有効な電子メールアドレスの一部、または_all_ RFC-有効なものが必要ですか?別の言い方をすると、あなたは_簡易メールアドレスを探していますか? – cdeszaq
私は有効なメールアドレスを探していません。私はAPIに縛られています、そして、それらは私が電子メールアドレスを受け取る2つのフォーマットです。 – Shpigford