-3

以下のような一連のメールがあります

"test@test.comtest.test1@test.comtest@yahoo.co.intest1.test2@support.yahoo.com"

これを有効な電子メール アドレスの配列に変換したいと考えています。正規表現を使用してこれを解決しようとしています。

4

2 に答える 2

2

みんなのコメントをまとめると、

データをより適切に区切る必要があります。たとえば、次のようにします。

test@test.com;test.test1@test.com;test@yahoo.co.in;test1.test2@support.yahoo.com

これを行うと、回答を分割して、考えられる電子メール アドレス;のリストを取得できます。ただし、 regex を使用して電子メールアドレスを検証する際の問題について、この SO 承認された回答を見てください。電子メール アドレスには非常に多くの形式と可能性があるため、正規表現だけで検証するのは困難です。

上記の文字列を使用した区切りの例を次に示します。

于 2012-05-30T13:08:54.610 に答える
0

次のことを保証できる場合、これを実行できる可能性があります

  1. すべての電子メールが「test」またはその他の既知の文字列で始まる、または
  2. データ セット内の考えられるすべてのドメインが既知です。

いくつかの保証を行うことができれば、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)/

つまり、フィクスチャ データの場合は、適切な区切り文字を持つようにフィクスチャを修正します。これにより、時間がかからず、エラーが発生しにくくなります。

一方、それが実際のデータである場合、それらを分離できる可能性はほとんどありません。任意の末尾のメールボックス名から任意のドメイン名を区別することは実際的ではありません。

于 2012-05-30T15:35:00.003 に答える