• ベストアンサー

正規表現でシングルクォーテーションで囲まれた文字列

VB.NET で開発を行っています。 シングルクォーテーションで囲まれた文字列の検索を行いたいのですが正規表現の記述が良くわからないので困っています。 たとえば 'AAA' + 'BBB' + 'CCC' 上記のの文字列から「'AAA'」「'BBB'」「'CCC'」も検索したいのですが,パターンとして「'.*'」を用いると「'AAA' + 'BBB' + 'CCC'」が返ってきます。 どなたかご教授ください。よろしくお願いします。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

こういうのでよいの? Module Mogera Sub Main Dim strText as String strText = "'AAA'+'BBB'+'CCC'" Dim ms as MatchCollection 'ms = Regex.Matches(strText, "'.*?'") ms = Regex.Matches(strText, "'[^']*'") '↑どちらでもお好きな方をどうぞ Dim m as Match for each m in ms Dim s As String s = m.Groups(0).value Console.WriteLine(s) next End Sub End Module 実行結果: 'AAA' 'BBB' 'CCC' 「最左最長」というキーワードで正規表現について 調べてみてください。

tonytonychopper
質問者

お礼

お礼が遅くなってしまい申し訳ございませんでした。 ご丁寧にサンプルまでありがとうございます。 おかげ様でスッキリしました。

関連するQ&A

  • ''で囲まれていない文字列にマッチする正規表現

    下記のような文字列($str)に対して置換を行い、 my $str = qq{ AAA = BBB - 'CCC' }; $str =~ s/★正規表現★/sprintf("DDD(%s)",$1)/xmsge ; 変換後 $str = DDD(AAA) = DDD(BBB) - 'CCC' ; を実現する★正規表現★を書きたいと思っています。  ・AAA,BBB,CCCは[\w]で構成される文字列です。 ですが、シングルクォーテーション('')で囲まれていない文字列にマッチする正規表現が書けなく困っています。 一度、シングルクォーテーションで囲まれているものも含めて全てDDD()をつけて、そのあとで、シングルクォーテーションを含むものは元に戻すことでやりたいことは実現できているのですが、1行で実現できる方法を探しています。 アドバイスよろしくお願いします。

    • ベストアンサー
    • Perl
  • 正規表現でシングルクォーテーション内の文字列を取る

    正規表現でどうしても分からない状態です。よろしくお願いします。 PHP5.2で、 'You\'re pen' というシングルクォーテーションで囲まれた文字列を 正規表現で取得しようとしています。 preg_match_all("/\'([^\']*|\\\')*?\'/", $src, $matches); のようにしていますが、どうしても 'You\' までしか取れません。 どうしたら取れるでしょうか。。m(_ _)m

  • Perlの正規表現について

    Perlの正規表現について質問です. ■質問 aaa bbb aaa bbb ccc "ddd" aaa bbb ccc "ddd eee" aaa bbb ccc ddd eee "fff ggg hhh iii" というような,文字列が書かれているファイルがあるとします. ※ダブルクォーテーションが無い行もあります. ※ダブルクォーテーション内のスペースの数は,行によってそれぞれ異なります. これを,ダブルクォーテーションの中にあるスペースだけ アンダーバーに置換する場合の正規表現を教えて下さい. つまり,下記の出力にしたいです. aaa bbb aaa bbb ccc "ddd" aaa bbb ccc "ddd_eee" aaa bbb ccc ddd eee "fff_ggg_hhh_iii" ■条件 ※ちょっと古いPerlでも動くよう,ゼロ幅肯定/否定後読((?<),(!<))は使わないでください. ※単に実現するだけなら, # cat inputfile | print -pe 'sub f(){}(shift;s/ /_/;return $_;); s/(\".*\")/&f($1)/e;' みたいな感じで置換できそうですが,「正規表現だけで簡単に書けるかどうか」が知りたいのです(正規表現だけで実現出来る場合,そのアルゴリズムを知りたいです).そのため,関数と/eオプションは使わないでください.

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

    正規表現を使用して文字列の置換(ereg_replace)をしたいと思うのですが、 うまくいかず悩んでおります。。 以下の文字列があったとします。 【AAA】【BBB】【CCC】DDD 文字列の中から先頭から始まる【】でくくられたものだけ(【AAA】)だけ削除して、 結果を【BBB】【CCC】DDDとしたいのですが、正規表現でどのようにヒットさせればよいのか分りません。 ※【】の中にくる文字はAAAとは限りません。 お手数ですがご教授頂けますでしょうか。

    • ベストアンサー
    • PHP
  • さくらエディタでの正規表現マクロ

    正規表現でタブ区切りの文字列の順序を入れ替える作業を試みています。 AAA BBB CCC PPP QQQ RRR のような文字列を BBB CCC AAA QQQ RRR PPP のように2列目、3列目、1列目のように順番を入れ替えたいです。 VBScriptで1行ずつ読み込み、タブを区切り文字として、配列に放り込み、配列の順番を指定して出力すればなんとか対応できるのですが、どうしてもさくらエディタで実装したいのですが、正規表現を駆使して対応できないものでしょうか? 検索により、パターンにマッチする部分は正規表現で2列目とか3列目というのは書けるのですが、パターンマッチだけで、置換後の文字列に変数などを使用できず苦しんでいます。 正規表現を用いていれればいいし、無理なら、さくらエディタで秀丸のように配列やFOR文などを使いたいのですが、使い方がわからず、質問しました。 ご存知の方がいらっしゃれば、教えてください。

  • 正規表現で囲まれた部分の文字列

    正規表現でダブルコーテーションで囲まれた部分の文字列 を検索したいのです。 \"([^\"])*\" とりあえずこんな感じで検索はできるのですが 問題はダブルコーテーションで囲まれた部分の エスケープ文字\の判定が上手くできません。 ([^\"]) この部分でダブルコーテーション以外の文字列、 ただし\"は除くって感じにしたいのですがどうすれば良いでしょうか。 宜しくお願いします。 正規表現のエンジンはBREGEXP.DLLです。 http://www.hi-ho.ne.jp/babaq/bregexp.html

  • 正規表現で少し複雑な置換がしたい

    Javaというよりも、正規表現について質問です。 (一応、言語はJavaで、String#replaceAllを使います) 以下のルールで与えられた文字列の置換を行う正規表現を考えていますが、なかなかうまくいきません。 1.正規表現で \w+:: にマッチする文字列を削除する。 2.ただし、'' (シングルクォーテーション)で囲われている文字列は   1.の対象としない 3.ただし、\' (シングルクォーテーションの前に\があった場合は)   シングルクォーテーションと認識しない。 例: 置換前  A * B \'' CCC.DD::EEE' FFF.GGG::HH ' III' 置換後  A * B \'' CCC.DD::EEE' FFF.HH 'III' 色々試してみたのですが、どうしてもうまくいきません。 正規表現が得意な方、教えていただけますでしょうか・・?

    • ベストアンサー
    • Java
  • 正規表現:囲われた文字列の置換

    シングルクオーテーションで囲われた文字列のシングルクオーテーションの前に文字を追加するように、正規表現を用いて置換しようと考えています。 全角文字は[^\x01-\x7E]で検索できるのはわかったのですが、シングルクオーテーションで囲われて、全角文字を含む場合という表現ができません。 下記のような、文字列を対象としています。置換をするのは、全角文字を含む文字列のみです。  全角文字のみ  半角文字のみ  全角半角文字両方 下記ののように置換したいです。 置換前: '全角文字や半角文字','testです','test'.'テスト'.'てすとtest','123' 置換後: A'全角文字や半角文字',A'testです','test'.A'テスト'.A'てすとtest','123' よろしくお願いします。

  • シングルクォーテーションを含む文字列の更新

    題名のとおりなのですが、データベースに更新するデータに シングルクォーテーションを含む文字があって、更新時にエラーとなってしまいます。 更新する文字列内にシングルクォーテーションの数が奇数あれば、さらに文字列にシングルクォーテーションを追加して、更新しようとしたんですが、ダメでした。 何か参考になるサイト、解決策をご存知の方、宜しくお願いします。 環境: OS:WinXPSP2 言語:VB6SP6 DB:SQLServer2000

  • VBAでの正規表現(regExp)がうまく表せません。

    エクセル2000のVBAで正規表現を使用してシングルクオーテーションに囲まれた文字を取得したいのですが、どうやったらよいのでしょうか。 検索対象文字列 = 今日は'家族'と'ピクニック'にいきます。 の時、「'家族'」 と 「'ピクニック'」の2つを取得したいのですが、「'家族'と'ピクニック'」が取得されてしまいます。 Pattern = "'.+'" ではダメなんでしょうか。 パターンをお教えいただければ、きっとmatchsコレクションとかはどうにかなると思いますので、ぜひともご教授くださいませ。

専門家に質問してみよう