- ベストアンサー
正規表現でつまずいています
お世話になっております。 VB2005を使っていますが、正規表現でつまずいています。 日付を表すデータとして、以下のような2つのパターンがあります。 Date: 02-apr-2010 ← : と 02の間に半角スペースがあります。 Date:13-Jan-2010 00:12:14 それぞれから年月日のデータのみを取り出すために正規表現を組んでみましたがうまくいきません。 "Date:\s*(?<date>.*)$|\s.*" $|\s.* で意図したところは、文字列の最後 or スペースが1個と任意の文字が続く、というものです。 正しい表記方法をご指示いただければ幸いです。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 半角スペースを判定するとしたら、 こちらの方がいいのかな? 一応テストしてみたものです。 Dim r As New Regex("Date:\s*(?<date>\d{2}-[a-z,A-Z]{3}-\d{4})", RegexOptions.Compiled) MsgBox(r.Match("Date:13-Jan-2010 00:12:14").Result("${date}")) ご参考になれば。
その他の回答 (2)
- nda23
- ベストアンサー率54% (777/1415)
>(?<date>) これが何だか分かりませんが、以下のようになるのでは? Date\s{0,1}(?<date>)$|(?<date>)\s{1}\S+.*$ >スペースが1個と任意の文字が続く 「日付で終わる」or「日付+空白1+空白以外が1個以上+任意の文字列で終わる」 こういう意味ではないでしょうか。 そこで、前述のような表現になります。
お礼
アドバイスありがとうございます。 >スペースが1個と任意の文字が続く 「日付で終わる」or「日付+空白1+空白以外が1個以上+任意の文字列で終わる」 意図したのはまさにこういうことです。 しかし、ご呈示いただいた書式では、うまく動作しませんでした。 or のくくり方がポイントのように思われますので、私もこのあたりをもう少し試したみたいと思います。
- n-jun
- ベストアンサー率33% (959/2873)
1つの案としてです。 "Date:.*(?<date>\d{2}-[a-z,A-Z]{3}-\d{4})"
お礼
ありがとうございます。 アドバイスいただいた方法でうまくいきました。
お礼
ありがとうございます。 おかげさまでアドバイスいただいた、どちらの方法でもうまくいきました。