0

プレーンテキストの段落からメールアドレスを削除する必要があります。私はこのサイトをグーグルで検索して、多くの提案を見つけました-どれも私は仕事に就くことができません。私は次のようなコードを使用しています:

Imports System.Text.RegularExpressions

        Dim strEmailPattern As String = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"       
        Dim senText As String = "blah blah blah blah blah someone@somewhere.com"  
        Dim newText As String = String.Empty

        newText = Regex.Replace(senText, strEmailPattern, String.Empty)

Regex.Replaceを呼び出した後も、newText文字列には電子メールを含む完全なsenText文字列が含まれています。使用していた正規表現パターンだと思いましたが、何度も試したので、コードに何かが足りないのではないでしょうか。

4

2 に答える 2

1

このposix正規表現は、提供されたすべての電子メールと一致する必要があります

  1. それらは有効でない可能性があります
  2. すべてのメールには少なくとも@
  3. 記号の周り@には、アルファベット、数字、ハイフン、ドットを含み、アルファベット以外の文字で始まらない文字のシーケンスがあります。
  4. すべての電子メールは、少なくとも1つのスペース文字で区切られます。

正規表現

([[:alpha:]][[:alnum:].-]+@)+[[:alpha:]][[:alnum:].-]+

これもうまくいくかもしれません

([a-zA-Z][[a-zA-Z0-9].-]+@)+[a-zA-Z][a-zA-Z0-9.-]+

短いバージョン(コメントのように)は

(\w[\w.-]+@)+\w[\w.-]+

しかし、これはさらにいくつかの無効な電子メールと一致します。

私がアドレス指定しているパターンは、ほとんどの電子メールアドレスと一致します。RFC-822準拠のすべての電子メールを本当に一致させたい場合は、ここでパターンを使用することを検討してください。すべての標準の電子メールアドレスに一致する6425文字の長い正規表現。ただし、実行が遅くなることに注意してください。

于 2012-12-13T18:01:39.150 に答える
-1

正規表現が失敗するさまざまなコーナーケースがあります。

あなたはこれと同じくらい単純に使うべきです

(?<=^|\s)[^@]+?\@[^@]+?(?=$|\s)

于 2012-12-13T17:55:35.867 に答える