- ベストアンサー
[C#.net]正規表現による指定文字数の文字列分割
visual studio 2005 C#で 指定文字数による文字列分割をしたいのですが 何とか正規表現で一発で書けないかと考えております。 指定文字数による文字列分割は、ちょっと言い方が分からないので、下の例をみていただければ、と思います。 例えば指定文字数が2文字の場合 "あいうえお"を以下のような配列で取得したいです。 [0]"あい" [1]"いう" [2]"うえ" [3]"えお" 例えば指定文字数が3文字の場合 [0]"あいう" [1]"いうえ" [2]"うえお" これを [0]"あい" [1]"うえ" というような分割はできるのですが、上記のような重複した感じでの取得ができません。 MatchCollection mc = Regex.Matches("あいうえお", ".."); ちょっと言い方が下手で分かりにくいかもしれませんが、よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
.NETの現行の正規表現の仕様では多分できません。 というのも、たとえば(先頭から)2文字マッチさせると注目点は マッチしただけ移動しますが、要求されている動作では注目点は1文字しか 移動してはいけないことになるからです。 Perl6で導入が予定されている :ov (:overlap) 修飾子があれば お望みの動作ができるかもしれません。
その他の回答 (2)
- Pakkun10
- ベストアンサー率44% (22/50)
これってむしろsubstringでやった方がいいんじゃないかと思ったりw
お礼
ありがとうございます。 今組んでいるプログラムの方ではsubstringで実装したいと思います。 ただ、正規表現で表現できるかどうかは気になりますので、引き続き掲示とさせていただきます。
- X-trail_00
- ベストアンサー率30% (438/1430)
下記のように行えば言っているとおりの実装が可能ですが? 正規表現を使ってという方法は思いつきません。 string a="あいうえお"; //対象の文字列 int b=2; //指定文字数 string[] c= new string[a.Length-(b-1)]; //格納用配列 for(int i= 0;i<a.Length-(b-1) ;i++) { c[i] = a.Substring(i,b); }
お礼
ありがとうございます。 仰るとおりfor文等でやった方がよさそうですね。 「これって正規表現で一発でいけるのかな?」と思い立って、質問させていただいた次第です。
お礼
なるほど。ありがとうございました。 正規表現自体の勉強も兼ねていたので、勉強になりました。ありがとうございました。