• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:""で囲まれていない箇所にある空白で分割)

preg_splitで一発で分割できる正規表現を探す方法

このQ&Aのポイント
  • preg_splitを使用して文字列を分割する方法について質問があります。
  • 質問文章には特定の形式の文字列があり、その文字列内の空白以外で分割したいです。
  • 現在のアプローチでは、一度文字列内の空白を別の文字に変換し、explodeを使用して分割しています。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

質問例のような場合は、 $ary = preg_split('/(?<=") /',$str); でいいと思いますが、多分、望みの答えじゃないですね。

asock
質問者

お礼

ご回答ありがとうございます。 " の前が空白だとは限らないので、こちらの方法だとうまく動作しませんね… 例えば a:"aaaa" bbbbbb bb c:"cccc ccc" であれば a:"aaaa" bbbbbb bb c:"cccc ccc"

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ""で囲まれていない箇所にある空白で分割

    PHPのカテゴリにて、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2334460 で同様の質問をした者なのですが、解決策を得られなかったので再度(こちらのPerlカテゴリにて)質問させて下さい。 (1)題名の通り、""に囲まれていない箇所にある空白によって文字列を分割したいのですが、split()等を使って一発で分割する正規表現はあるでしょうか。 (2)もし(1)が無理であれば、どういった手法が有効でしょうか。 ちなみに今のところ以下の方法で行っています。  1."" 中の空白をいったん別の文字に変換  2.split(/\s/) で分割  3.分割した各要素について1で変換した空白を復元

    • ベストアンサー
    • Perl
  • PHPで、"内は分割せずに、配列に分割する方法はありませんか?

    explodeや正規表現など、いろいろ考えたのですが、スマートな方法が見つからず、ヒントでもいただけるとありがたいです。 やりたいことは、 ABC 123 "BBB HHH" 456 789 "あい うえお" DDD という文字列を分割して配列に入れたいのですが、 "内は1つの文字列として分割せずに取り出したいのです。 結果として、 array( 0=>"ABC", 1=>123, 2=>"BBB HHH",// 元の"があってもなくてもいい 3=>456, 4=>789 5=>"あい うえお", 6=>DDD ) というものを得たいわけです。 単純に explode や split ではダメですし、正規表現だとどうなるのやらと。 "内の (スペース)を他のモノに置き換えて、explodeした後もとにもどす、とかでしょうか。他に何か手がありましたら、ご教示お願いします。

    • ベストアンサー
    • PHP
  • PHP 空白文字で分割したい

    $text = "日本 中国 オランダ" を 日本, 中国, オランダのように分割するために、 以下のコードを書きました。 preg_split("/[\s]+/", $text); しかし、全角スペースの時も分割したいので、正規表現を/[ \s]+/とすると、preg_splitの返す配列に期待したものが、入りません。なぜか空文字("")が含まれます。 どうすれば、全角スペースに対応できるでしょうか?

    • ベストアンサー
    • PHP
  • エクセル関数 A#BB#CCCを分割したい

    A1に"A#BB#CCC"という文字列があり、#を元にB1 C1 D1に分割させたいのですが、ご教授お願いいたします。B1は書けたのですが、#が同一文字で判別方法などがよくわかりません。 可能であれば、A列が空白になるまでの、マクロ登録をしておきたいです。 B1 = LEFT(A1,FIND("#",A1)-1)

  • 拡張Split関数の出力をセルに

    以下をネットでみつけました。 https://vbabeginner.net/multiple-split/ Splitの拡張関数で区切り文字を複数指定できるので便利だと思いました。 記事では、結果を「Debug.Print」でイミディエイトウィンドウに出力していますが 関数なのでエキセルのシートのセルにも出力させる事ができると思うのですが どうやったら良いですか? 記事のようなSUB(SpritExTest())を作成すれば良いのでしょうが 関数なので汎用で利用できないかと考えました。 例えば、シートで A1: AAAA/BBBB*CCCC/DDDD*EEEE だとして B1:SplitEx(A1,Array"/","*"))と入力すれば 例えば以下のように右側に表示される C1:AAAA D1:BBBB E1:DDDD F1:EEEE これができれば、B1の式を下方向にコピペすると C、D,E,F列に A列の同じようなセルがあれば連続して分割処理(出力)される

  • UNIXで文字列分割

    UNIXでマルチバイトの文字列で分割したいです。 例) aaaa bbbb cccc dddd eeee ffff ↓ [bbbb]で分割 [1]aaaa [2] cccc dddd eeee ffff できればawkで処理をしたいと考えています。

  • 【Excel】 特定の文字でセルを分けたい

    こんにちは。 1 aaa\bbb\ccc 2 aaa\bbb\ccc\ddd 3 eeee\ffff\gggg 4 eeee\ffff\gggg\hhhh 上のようにディレクトリ表示されているA列を \で列を分けたいのです。 階層は列によって異なります。 1行目は Aにaaa Bにbbb Cにccc という形です。 どのような方法があるでしょうか。 よろしくお願いいたします。

  • エクセルでデータを区切ってセルを分けたいのですが

    よろしくお願いいたします。 2007を使用しています。 エクセルでA1から順に下記のように入っているとします。 対戦表です。階級別の巴戦と思っていただければ。 A1 AAAA x BBBB x CCC B1 DDD x EEEE x FFFF C1 GGGG x HHH x III D1 JJ x KKK x LLLL これを A1 AAAA /A2 x /A3 BBBB /A2 x /A5 CCC のように分けたいのです。 カンマなら分けられると聞いたことがあるのですが。。。 各行の人名の文字数も違うし、全然わかりません。

  • 文字列の分割について

    VB初心者です。 以下のように文字列を分割したいのですが <やりたいこと> MOJI="A","B","C,D,E" ↓ ARRAY(0)="A" ARRAY(1)="B" ARRAY(2)="C,D,E" ARRAY=SPLIT(MOJI,",") ではだめですよね。 何か、簡単なやり方はありますか? よろしくお願いします。

  • [Excel]重複データの一方のセルが持つ値を一方の空白セルに反映させたい

    A列にある7000件ほどのデータの中から重複データのみを抽出し、 重複データの一方がB列に持つ値を、もう一方のデータのB列の空白セルに反映させたいのですが、方法はありますでしょうか? 「COUNTIF」を使って重複データの抽出はできますが、一方が持つデータをもう一方の空白に反映させることができません。 手作業では期限に間に合わない可能性がみえて焦っております。 恐縮ですがご教授いただけますでしょうか。 (例) [処理前] A列:B列:C列 1111:AAAA:aaaa 2222:BBBB:bbbb 3333:CCCC:cccc 1111:    :dddd 2222:    :eeee [処理後] A列:B列 1111:AAAA:aaaa 1111:AAAA:dddd 2222:BBBB:bbbb 2222:BBBB:eeee