1

csharp でプロキシを構築しています。私のタスクの 1 つは、http ヘッダー内の電子メールを検索することです。問題は、取得したデータ内で @ ではなく %40 を受信することです。メールアドレスの@が%40に置き換わる?これは、特定の文字列内の電子メールアドレスを取得するための私のコードです (代わりに %40 ではなく @ を使用) コード:

  string regexPattern = @"[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";
  Regex regex = new Regex(regexPattern);
  MatchCollection matches = regex.Matches(this._context.Request.Headers[i]);
  foreach (Match match in regex.Matches(this._context.Request.Headers[i]))
  {// any email address should be printed 
         Console.WriteLine(match.Value);
  }
4

3 に答える 3

2

私があなたの質問を理解したかどうかわかりません。@提供した正規表現で置き換えてみません%40か?それで:

string regexPattern = @"[A-Za-z0-9._%-]+%40[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";
于 2012-06-15T21:54:43.177 に答える
1

正規表現を実行する前に、データをURLデコードします。

regex.Matches(this._context.Server.UrlDecode(this._context.Request.Headers[i]))

または:

regex.Matches(HttpUtility.UrlDecode(this._context.Request.Headers[i]))
于 2012-06-15T22:04:38.150 に答える
0

@ または "%40" を許可するには、OR (|) を使用します。

[A-Za-z0-9._%-]+(@|%40)[A-Za-z0-9.-]+.[A-Za-z]{2,4}

于 2012-06-15T21:57:10.923 に答える