1


1

rubyを使用して、いくつかの.txtドキュメントからすべての電子メールアドレスを抽出します

一部の.txtドキュメントからすべてのメールアドレスを抽出する必要があります。 これらのメールには次の形式があります。

  1. a @ abc.com

  2. {a、b、c} @ abc.edu

  3. いくつかの `@`記号を含むその他の形式。

私はこのプログラムを書く最初の言語としてルビーを選びましたが、正規表現の書き方がわかりません。 誰か助けてくれますか? ありがとうございました!

3 Answer


6


txtドキュメントの性質によっては、電子メールアドレスの検証を試みる複雑な正規表現のいずれかを使用する必要はありません。 何も検証しようとしていません。 あなたはすでにそこにあるものをつかもうとしています。 一般的に言えば、すでに存在するものを取得するための正規表現は、入力を検証する必要がある正規表現よりもはるかに簡単です。

重要な質問は、.txtドキュメントに、抽出するメールアドレスの一部ではない@記号が含まれているかどうかです。

この正規表現は、最初の2つの要件を処理します。

\[email protected][\w.-]+|\{(?:\w+, *)+\w+\}@[\w.-]+

または、@記号を含むスペース以外の文字のシーケンスと、2番目の要件(スペースがある)を許可する場合:

\[email protected]\S+|\{(?:\w+, *)+\w+\}@[\w.-]+


2


むしろこれを見てくださいhttp://fightingforalostcause.net/misc/2006/compare-email-regex.php [詳細な分析]:

Upshotは次の正規表現を使用します。

/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~][email protected]((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i


0


これはhttps://www.shellhacks.com/regex-find-email-addresses-file-grep/で見つけました。

\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b