- - PR -
VB.NET 2003 の正規表現について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-02-21 10:42
はじめまして。
SMTPの送信メールの添付ファイル名を正規表現で取得したいのですが、下記2パターンに対応させることで苦戦しております。 取得したいのはfilenameの部分であり、下記のような正規表現でコーディングしたのですが、No2のほうしか取得できません。 No1、No2ともに取得できる正規表現をアドバイスしていただけないでしょうか? よろしくお願いいたします。 ******問題の正規表現***** "(?<=(^|\r\n)Content-Disposition: attachment;\r\n\tfilename="")(.*\r\n)*(?=""\r\n\r\n)" ******問題の正規表現***** ***No1 添付ファイルが複数あり、ファイル名が一行でおさまる場合******* Content-Disposition: attachment; filename="=?iso-2022-jp?B?GyRCJUYlOS=" gqCCoIKggqCCoIKggqCCoIKggqCCoA== Content-Disposition: attachment; filename="=?iso-2022-jp?B?GyRCJUYXYZ?=" bbbbbbbb ******************************************************************** ***No2 添付ファイルが複数あり、ファイル名が一行でおさまらない場合*** Content-Disposition: attachment; filename="=?iso-2022-jp?B?GyRCIzEjMi=?= =?iso-2022-jp?B?MRsoQi50eH=?=" Content-Disposition: attachment; filename="=?iso-2022-jp?B?GyRCIzEjMi=?= =?iso-2022-jp?B?MRsoQi50eH=?=" ******************************************************************** -------------------------------------------------------------------- No1の期待値は =?iso-2022-jp?B?GyRCJUYlOS= と =?iso-2022-jp?B?GyRCJUYXYZ?= です。 No2の期待値は =?iso-2022-jp?B?GyRCIzEjMi=?= =?iso-2022-jp?B?MRsoQi50eH=?= と =?iso-2022-jp?B?GyRCIzEjMi=?= =?iso-2022-jp?B?MRsoQi50eH=?= です。 -------------------------------------------------------------------- |
|
投稿日時: 2008-02-21 12:21
正規表現にはあまり詳しくないですし、もっといい方法もあるかもしれませんが、
こんな感じで処理を分けるのはいかがでしょうか。 |
|
投稿日時: 2008-02-21 13:04
考えて見たのですが、2点あります。
1)正規表現を使わない方がよいのでは(別の方法を考えては?) 2)アイデアですが、最初に改行を取り去ってから正規表現をすれば簡単です。 (あと、2パターンを想定していますがさらに検証した方がよいと思います) 参考になればと思います。 _________________ |
|
投稿日時: 2008-02-22 10:40
自己解決しました。
下記の正規表現で取得できました。 ポイントはピリオドが改行コード(\\n)を含まないことでした。 皆様アドバイスありがとうございました。 "(?<=(^|\\r\\n)Content-Disposition: attachment;\\r\\n\\tfilename="")[^""]*(?=""\\r\\n\\r\\n)" |
1