- ベストアンサー
正規表現でつまずいています
お世話になっております。 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)
- Visual Basic
- 回答数3
- ありがとう数6
- みんなの回答 (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})"
お礼
ありがとうございます。 アドバイスいただいた方法でうまくいきました。
関連するQ&A
- 正規表現での空白文字チェックについて。
VB2005環境です。 正規表現を用いて、以下の3パターンのチェックをしたいと 思っています。 A.半角のみカナ許可(半角スペースも許可) B.全角のみカナ許可(全角スペース許可) C.全角&半角カナのみ許可(スペース許可) Cのパターンは^[ァ-ヶ\uFF61-\uFF9F\s]+$のように 記述してみましたが、\sでは全角、半角問わずに スペースであればよしとしてしまうようで、A、Bの パターンが実現できません。 探してみた限り、半角全角スペースを区別する正規表現が 見つからなかったのですが、そのような表現がありましたら ご教授いただけないでしょうか?
- ベストアンサー
- Visual Basic
- 正規表現について
正規表現について質問をさせていただきます。 VB6.0にて正規表現を使用し、入力された文字のチェックを行っていますが どうしてもうまくいきません。 チェックしたい文字は A(半角アルファベット大文字1文字)または AAA(半角アルファベット大文字3文字)または (AAA)(半角カッコつき半角アルファベット大文字3文字)で 上記3パターン以外はエラーとしたいと思っています。 パターンは下記のように作成したのですが "(^[\(][A-Z]{3}[\)])|(^[A-Z]{1,3})" A、AAA、(AAA)以外でもA(AA)やAAAA等も正常ケースとして通過してしまいます。 パターンをどのように作成すればよいか教えて下さい。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- VBAで正規表現
Excel2000-VBAにてマクロ作成中です。 以下のような処理を正規表現を使用して一発で実行させたいのですが、 正規表現に指定するパターンがわかりません・・・。 どなたがご存知でしたら教えて下さい。 やりたいこと:ある文字列中の中のスペース(半角全角両方)を半角スペースに変換し、 さらに連続している半角スペースを1つに置換したい。 スペースを半角に統一することは、Replace関数で可能かと思っています。
- ベストアンサー
- Visual Basic
- 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
- 正規表現で [ ] を探したい
正規表現の説明のサイトなど、調べてみたのですが、分からなかったのでお聞きします。 現在下記のようなテキストデータがあります。 []は半角カッコです。 ************* : [かきこ] あいうえお ばびぶべぼ [まみむめも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回とは限らず複数回でてくることもあります。 正規表現で書くことは可能なのでしょうか。 初歩的な質問で大変申し訳ありませんが、どうぞ宜しくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
お礼
ありがとうございます。 おかげさまでアドバイスいただいた、どちらの方法でもうまくいきました。