以下のような一連のメールがあります
"test@test.comtest.test1@test.comtest@yahoo.co.intest1.test2@support.yahoo.com"
これを有効な電子メール アドレスの配列に変換したいと考えています。正規表現を使用してこれを解決しようとしています。
みんなのコメントをまとめると、
データをより適切に区切る必要があります。たとえば、次のようにします。
test@test.com;test.test1@test.com;test@yahoo.co.in;test1.test2@support.yahoo.com
これを行うと、回答を分割して、考えられる電子メール アドレス;
のリストを取得できます。ただし、 regex を使用して電子メールアドレスを検証する際の問題について、この SO 承認された回答を見てください。電子メール アドレスには非常に多くの形式と可能性があるため、正規表現だけで検証するのは困難です。
上記の文字列を使用した区切りの例を次に示します。
次のことを保証できる場合、これを実行できる可能性があります。
いくつかの保証を行うことができれば、Ruby で次のようなことができます。
emails = "test@test.comtest.test1@test.comtest@yahoo.co.intest1.test2@support.yahoo.com"
# Test for a known string ending in a known domain.
emails.scan /(test.*?[.](?:com|in))/
# Test for known domains with positive lookbehind.
emails.scan /(?<=^|com|in).*?(?:com|in)/
つまり、フィクスチャ データの場合は、適切な区切り文字を持つようにフィクスチャを修正します。これにより、時間がかからず、エラーが発生しにくくなります。
一方、それが実際のデータである場合、それらを分離できる可能性はほとんどありません。任意の末尾のメールボックス名から任意のドメイン名を区別することは実際的ではありません。