• ベストアンサー

正規表現でつまずいています

お世話になっております。 VB2005を使っていますが、正規表現でつまずいています。 日付を表すデータとして、以下のような2つのパターンがあります。 Date: 02-apr-2010   ← : と 02の間に半角スペースがあります。 Date:13-Jan-2010 00:12:14 それぞれから年月日のデータのみを取り出すために正規表現を組んでみましたがうまくいきません。 "Date:\s*(?<date>.*)$|\s.*" $|\s.*  で意図したところは、文字列の最後 or スペースが1個と任意の文字が続く、というものです。 正しい表記方法をご指示いただければ幸いです。 よろしくお願いいたします。

  • myart
  • お礼率69% (18/26)

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.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}")) ご参考になれば。

myart
質問者

お礼

ありがとうございます。 おかげさまでアドバイスいただいた、どちらの方法でもうまくいきました。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

>(?<date>) これが何だか分かりませんが、以下のようになるのでは? Date\s{0,1}(?<date>)$|(?<date>)\s{1}\S+.*$ >スペースが1個と任意の文字が続く 「日付で終わる」or「日付+空白1+空白以外が1個以上+任意の文字列で終わる」 こういう意味ではないでしょうか。 そこで、前述のような表現になります。

myart
質問者

お礼

アドバイスありがとうございます。 >スペースが1個と任意の文字が続く 「日付で終わる」or「日付+空白1+空白以外が1個以上+任意の文字列で終わる」 意図したのはまさにこういうことです。 しかし、ご呈示いただいた書式では、うまく動作しませんでした。 or のくくり方がポイントのように思われますので、私もこのあたりをもう少し試したみたいと思います。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

1つの案としてです。 "Date:.*(?<date>\d{2}-[a-z,A-Z]{3}-\d{4})"

myart
質問者

お礼

ありがとうございます。 アドバイスいただいた方法でうまくいきました。

関連するQ&A

  • 正規表現での空白文字チェックについて。

    VB2005環境です。 正規表現を用いて、以下の3パターンのチェックをしたいと 思っています。 A.半角のみカナ許可(半角スペースも許可) B.全角のみカナ許可(全角スペース許可) C.全角&半角カナのみ許可(スペース許可) Cのパターンは^[ァ-ヶ\uFF61-\uFF9F\s]+$のように 記述してみましたが、\sでは全角、半角問わずに スペースであればよしとしてしまうようで、A、Bの パターンが実現できません。 探してみた限り、半角全角スペースを区別する正規表現が 見つからなかったのですが、そのような表現がありましたら ご教授いただけないでしょうか?

  • 正規表現について

    正規表現について質問をさせていただきます。 VB6.0にて正規表現を使用し、入力された文字のチェックを行っていますが どうしてもうまくいきません。 チェックしたい文字は A(半角アルファベット大文字1文字)または AAA(半角アルファベット大文字3文字)または (AAA)(半角カッコつき半角アルファベット大文字3文字)で 上記3パターン以外はエラーとしたいと思っています。 パターンは下記のように作成したのですが "(^[\(][A-Z]{3}[\)])|(^[A-Z]{1,3})" A、AAA、(AAA)以外でもA(AA)やAAAA等も正常ケースとして通過してしまいます。 パターンをどのように作成すればよいか教えて下さい。 よろしくお願いします。

  • VBAで正規表現

    Excel2000-VBAにてマクロ作成中です。 以下のような処理を正規表現を使用して一発で実行させたいのですが、 正規表現に指定するパターンがわかりません・・・。 どなたがご存知でしたら教えて下さい。 やりたいこと:ある文字列中の中のスペース(半角全角両方)を半角スペースに変換し、 さらに連続している半角スペースを1つに置換したい。 スペースを半角に統一することは、Replace関数で可能かと思っています。

  • 正規表現について

    全角文字と半角文字のスペースの有無を正規表現で検出したいと思っております。 書き方をお教え頂けますでしょうか。 よろしくお願いいたします。

  • Javaの全角スペースの正規表現

    今、Javaのプログラムをしてるんですが、正規表現で全角スペースをどう表現したらいいのでしょうか? 下記のプログラムを実行して、スペースを埋めて「あいう」と出したいです。 Pattern.compile("正規表現").matcher(" あ い う ").replaceAll(""); 正規表現の\sとか、trim()メソッドを使用するなどだと、半角スペースしか削除することができなかったです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 正規表現について

    お世話になります。 ●●● ●●● という文字列かどうか判断する正規表現を作成したいです。 条件としては、 ・「文字1 (←全角スペース)文字2」という感じで、文字1と文字2に全角スペースが挟まれている感じで、文字列の先頭にも末尾にも空白文字は入ってはいけない(真ん中に1つのみ) ・文字1と文字2には、数字・空白以外の文字が入る(主に感じ・ひらがな・カタカナが入る)(文字数は一文字以上) といったところです。 自分で作成した正規表現は、 $pattern = '/^([\d\S])+ ([\d\S])+$/'; if( !preg_match($pattern,$chkStr) ) print "マッチしていない"; } なんですが、どうもマッチしてほしい文字にマッチしていないようなのです。 お手数ですがご教授ください。

    • ベストアンサー
    • PHP
  • 正規表現

    下記のような「'2009」から始まり、「0, 'http://');」 で終わる文字列を、全部半角スペースに置き換えたいと考えています。 その場合、正規表現でどのように書いたらよろしいのでしょうか。 ご教示お願いします。 '2009-07-06 16:42:53', 0, 'http://'); '2009-07-07 13:00:50', 0, 'http://'); '2009-07-07 13:02:40', 0, 'http://');

    • ベストアンサー
    • PHP
  • 正規表現で [ ] を探したい

    正規表現の説明のサイトなど、調べてみたのですが、分からなかったのでお聞きします。 現在下記のようなテキストデータがあります。 []は半角カッコです。 ************* : [かきこ] あいうえお ばびぶべぼ [まみむめもI らりるれろ かきくけこ : ************* OCR処理をしている為、カッコ"]"が"I"大文字半角のアイになっている箇所があります。 その間違いを捜し当てたいのですが、 [ I I ] I I の3パターンあると思うのですが、それぞれを探せる正規表現を教えていただけないでしょうか? どなたかご教授願います。

  • Perlで使える正規表現を教えて下さい。

    Perlで使える正規表現を教えて下さい。 半角英語で、小文字が3文字以上続いた後、大文字が来る場合、その大文字の右にスペースを入れる。 これをPerlで使える正規表現を教えて頂けないでしょうか? 例 $str = 'AaaAaaaBbbbbCccccDddBbA'; # Aaa Aaaa Bbbbb Ccccc DddBbA ちなみに、色々ネットで調べて試してみて、 $str =~ s/([a-z])([A-Z])/$1 $2/g; が最も近いコードになったのですが、2文字続いただけでもスペースが入り困っています。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • VBAの正規表現について教えてください

    文章に含まれる下記文字を抽出したいのですが、書き方を教えてください。 抽出したい文字 「#hogehoge 」  の「#」から最後の「半角スペース」までです。 上記文字が含まれている文章は こんにちは #aiuoeo さん、#kakikukeko さん、私は・・・・ #hogehoge 先日の・・・ などの文章です。 先頭が必ず#とは限らず、最後も半角スペースではないので、 ^#.*$/sなどではありません。 また、1回とは限らず複数回でてくることもあります。 正規表現で書くことは可能なのでしょうか。 初歩的な質問で大変申し訳ありませんが、どうぞ宜しくお願いいたします。

専門家に質問してみよう