指定数ごとにスペースを入れる正規表現

このQ&Aのポイント
  • 10文字以上続く半角英数の場合、指定数ごとにスペースを入れる方法を教えてください。
  • $str1は10文字以上続く場合、5文字ごとにスペースを入れるようにします。$str2は10文字以上続かないため、そのままの形で出力します。$str3は半角英数ではないため、そのまま出力します。
  • 正規表現を使用して、10文字以上続く半角英数に指定数ごとにスペースを入れる方法を教えてください。また、半角英数でない場合はそのまま出力する方法も知りたいです。
回答を見る
  • ベストアンサー

指定数ごとにスペースを入れる正規表現

10文字以上続く半角英数の場合、指定数ごとにスペースを入れるのはどう記述すればよいのでしょうか? 内容は、 $str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $str2 = "ABCDEFGHI JKLMNOPQR STUVWXYZ"; $str3 = "あいうえおかきくけこさしすせそ"; という文字列があり 10文字以上続く半角英数なら5文字ごとにスペースを入れるようにしたいのです。 $str1は10文字以上半角英数が続くので、5文字ごとにスペースを入れて 『ABCDE FGHIJ KLMNO PQRST UVWXY Z』 と出力。 $str2は10文字以上続かないのでそのまま出力 $str3は半角英数ではないのでそのまま出力 としたいのですが この場合どのように記述すればよいのでしょうか? ご教授よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

function change_string($matched) { return preg_replace("/[0-9a-zA-Z]{5}/", "\\0 ", $matched[0]); } echo preg_replace_callback("/([0-9a-zA-Z]{10,})/", "change_string", $str3); こんなのはどうでしょうか。

sutesute00
質問者

お礼

こんな感じです!! 思ってたより短いプログラムで済み本当感謝です! ありがとうございました。

関連するQ&A

  • 複数行表示されたリストボックスから最後の行だけ削除するには

    エクセルのユーザーフォーム上にあるリストボックスですが 必要に応じてボタンクリックでAddItemにより項目が追加されて行くリストボックスがあります この複数行表示された項目の内 別のボタンクリックで最後に追加された行だけ削除していくには どのように記述すればいいのでしょうか ------------- abcde fghij klmno pqrst ------------ と表示されていたリストボックスから クリックするたびに ------------- abcde fghij klmno ------------- ------------- abcde fghij ------------- の様に最後の行だけ削除をしたいのです 単純に ListBoX1.Clear では全て消されてしまい こまっています ぜひお力をお貸し下さい よろしくお願いします

  • Wordの置換機能について

    文書中の()がついた部分だけ抜き出して置き換えをしたいのですが、 ワイルドカードを使うと式と処理されるようで置き換えができません。 abcde(fghij)klmno このとき(fghij)の部分だけ置き換えたいのです… ()内の文字だけを置き換えるにはどうしたらよいのでしょうか?

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

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

    • ベストアンサー
    • Perl
  • PHP 正規表現による文字列の抜き出しについて

    PHP 正規表現による文字列の抜き出しについて 初歩的な質問で申し訳ありません。いくつかググったのですが、それでも自分の求める形を見つけられず質問させて頂きました。 「あいうえおかきくけこさいすせそ $abc12345678 $99999 たちつてと」 このような文字列の時に、 『$abcで始まって半角スペースで終わる所までの部分を抜き出す』には、 どのように記述すれば宜しいでしょうか。 (上記の文字列の場合は、「$abc12345678」を抜き出したいことになります。) よろしくお願いします。

    • ベストアンサー
    • PHP
  • Javascript 全角カナ+半角スペース+全角スペースの正規表現について

    初歩的な質問をしてすみません。 一応、自分でも試行錯誤で if (str.match(/[^ア-ンー\- ]+/g)){ alert("フリガナの項目を「全角カタカナ」のみで入力して下さい。"); } という条件を作ってみたのですが、半角スペースを入力したらTrueとなってしまいます。 全角カナ+半角スペース+全角スペース以外はFalseとなる正規表現を教えていただけないでしょうか。 以上、よろしくお願いします。

  • wordでスペースが半角になる

    word2007なのですが、 英数文字のまじった(2011年1月など)言葉を入力してスペースをいれると スペースが半角になってしまいます。(スペース半角、全角、半角・・・) 全角スペースになるように設定できないものでしょうか? 何が原因でしょうか?

  • 半角スペース削除について

    半角スペースを一度削除してから禁止語句などがないかチェックし、 その後、半角スペースなどが入っている場合、元状態に戻したいと思います。 以下のように記述することで半角スペースを削除してから チェックはできると思うのですが、 それを元の状態に戻すということは不可能でしょうか? $str =~ s/[\s ]+//g if($str =~ /バカ/){ push(@error, 'バカと投稿はできません'); }

  • PHPで指定文字数で切りたい場合

    PHPで、全角と半角の混在した文字列で 全角=1文字、半角=0.5文字として換算した文字数を切り詰めたい場合は どうすれば良いのでしょうか?? 改行コードなどもカウント出来たら尚良いです! 環境は PHPのソースコードはutf-8 入出力はShift-jis ・mb_substrは、半角も1文字とカウントされてしまいます ・mb_strimwidthは、文字幅なので今回は使い物になりません ・mb_strcutはなぜかうまく動いてくれません $str = mb_convert_encoding($str,'shift-jis','utf-8'); $str = mb_strcut($str,0,1000,'shift-jis'); $str = mb_convert_encoding($str,'utf-8','shift-jis'); 500文字になるのを期待したが、出力された文字は512文字になってしまった 全角=1文字、半角=0.5文字の検証は以下のサイトにて行いました http://www.luft.co.jp/cgi/str_counter.php お忙しい中恐縮ですが、 わかる方お教えくださいませ!

    • ベストアンサー
    • PHP
  • 正規表現で5文字切抜き

    正規表現で5文字切抜き 正規表現について悩んでいます。秀丸エディタで正規表現を使いたいと思っています。 各行に任意の文字列(スペース、ハイフン、カンマ、アンダーバー、半角全角英数等含む)があります。 先頭行から5文字を残して残りは削除したいと思います。 5文字以下はそのまま残したいと思います。 例) aaaaabb⇒aaaaa ab cdef⇒ab cd a ⇒ a aa⇒aa 「^.{1,5}」とやると、先頭から5文字選択できるのはわかります。 「^.{1,5}(?=.+)」とやっても選択できるのはわかります。 ただし、6文字以上は削除とした場合、どのように正規表現を組み立てればよいでしょうか?

  • splitを使ってスペース位置で文字列を区切りたい

    splitを使ってスペース位置で文字列を区切りたいのですが、 String[] word = str.split(" ",0);  //半角空白 のように書くと、全角スペースは区切りとしてみなされず、 String[] word = str.split(" ",0);  //全角空白 のように書くと、半角スペースは区切りとしてみなしてくれません。 全角スペースでも半角スペースでも、スペース位置で文字列を区切りたいのですが、どのように書けばよいのでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう