ここから本文です

C#の正規表現で、例えば aabbccddeeff みたいな文字列があったときに bb を検...

アバター

ID非公開さん

2017/2/700:51:58

C#の正規表現で、例えば
aabbccddeeff
みたいな文字列があったときに
bb
を検索したいとします。
この時どのようにしたらいいのでしょうか?

そして、
aa

bb

ccddeeff
といったように分割して取得するにはどうしたらいいのでしょうか?
(検索対象の文字列前後で分けたいです)

閲覧数:
33
回答数:
1

違反報告

ベストアンサーに選ばれた回答

reb********さん

2017/2/708:07:11

”「b」の1個以上の繰り返し” ということでしょうか。正規表現では「b+」と書きますね。
分割含めて前後も取り出したいのであれば、以下のようにすると良いでしょう。

Regex rg = new Regex(@"(.*?)(b+)(.*)");
Match mc = rg.Match("aabbccddeeff");
if (mc.Success)
{
    Console.WriteLine("{0} {1} {2}",
        mc.Groups[1].Value, mc.Groups[2].Value, mc.Groups[3].Value);
}

"(.*?)(b+)(.*)" 内の3つのかっこ ( ) がそれぞれマッチした mc.Groups[1]~[3]に格納されます。
mc.Groups[1] → "aa"
mc.Groups[2] → "bb"
mc.Groups[3] → "ccddeeff"

文字列が "bbb1123" だった場合は以下のようになります
mc.Groups[1] → ""
mc.Groups[2] → "bbb"
mc.Groups[3] → "123"

  • アバター

    質問者

    ID非公開さん

    2017/2/1012:08:37

    回答頂きありがとうございます。
    今考えているのは、エディタなどでの検索と同じような感じにしたいと思っています。
    指定した部分、それ以外という形でわけられればいいなと思っています。
    先の例で言えば、エディタで画面上に
    aabbccddeeff
    とあり、検索ダイアログなどで
    bb
    と指定したら、
    bb
    の部分がハイライトされるような感じにしたいので、全体を指定してその中で合致する部分を抜き出す、というのと少し違ってきます。
    ※すみません、うまく説明できなくて。
    グループ化などを用いずに、単に検索対象か、それ以外かという分け方は難しいのでしょうか?
    知識が足りないので、勘違いしている部分もあるかと思います。
    合わせてご指摘いただければと思います。

  • その他の返信(3件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2017/2/14 01:02:11

ありがとうございました。
希望通りの動作になりました。
いろいろと勉強になりました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる