2016-05-16 12 views
0

私はPHPを使用して、特定のテキストで電子メールアドレスを検索しています。 私の現在の正規表現は次のようになります。これは、CPUリソースを大量に消費しているテキスト内の電子メールを検索するための正規表現

'/([\w+\.]*\[email protected][\w+\.]*\w+[\w+\-\w+]*\.\w+)/is' 

。特定のテキストに有効な電子メールを見つけるための最適化された低リソース(つまりCPU)RegExがありますか?

+3

[正規表現を使用して電子メールアドレスを検証する](http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-anemail-address) – RAnders00

+1

の使用可能な複製@ RAnders00で言及された正規表現またはアトミックグループまたは所有量の限定子を使用する必要があります。そうでなければ、あまりにも多くのバックトラックを行います__(あなたの正規表現は間違っています)__ – rock321987

+0

そのリンクを指してくれてありがとう@ RAnders00 .. –

答えて

1

この

で試験

/^[^@][email protected][a-z]+(\.[a-z]+)+$/ 

はあなたよりも優れています。

なぜですか? [email protected]

成功した場合には、私の正規表現は、解決策を見つけるために14の手順を実行し

のは、我々はこのメールをテストしたいとしましょう。
あなたのものは22 stepsです。

しかし、最大の違いは、

は、我々はこのメールをテストしたいとしましょう、一致しない場合は、次のとおりです。[email protected]

私の正規表現は、31個のステップを実行し

ユアーズ(それがあるべきを失敗しました^$デリミタで修正されます。それ以外の場合は、これが良いものとして一致します)292ステップを実行して失敗します。時には、パフォーマンス向上のために、いくつかの偽陽性をトレードオフ

+0

正規表現をチェックするためにどのアプリケーションを使用していますか?あなたは私に教えてくれますか?私が間違っている場所を確認することもできます。 –

+0

@Siddharthsharma:regex101.comを使用 – DonCallisto

+0

ありがとう!!!!! –

1

が望ましい:

/[^ @]*@[^ ]*/ 

これは非常に高速である必要があります。それは[email protected]のようなものにもマッチしますが、そのような構文は通常のテキストでは一般的ではありません。

関連する問題