perlとMySQLでデータベースを作っています。
だいぶ行き詰ってしまったので質問させてください。
以下のような一行の文字列が存在するとします。
ABC DEF @@@2222 EHI J @@@888 KL MN OPQR @@@632 ST
この中から、
2222
888
632
を取り出して配列に格納することは可能でしょうか?
分割することは可能な気はするのですが、
それを配列に入れるとなるとどうにもならなくなってしまいました。
漠然とした質問で大変申し訳ないのですが、
なにかヒントになるものだけでもお気づきの方いらっしゃいましたら、
ぜひご教示くださいませ。
No.3ベストアンサー
- 回答日時:
やり方はいろいろありますが、「英数字と空白以外の文字列」に続く「英数字文字列」を配列に入れるなら、
$str='ABC DEF @@@2222 EHI J @@@888 KL MN OPQR @@@632 ST';
(@array)=($str=~/(?<=[^\s\w])(\w+)/g);
ご回答ありがとうございます。
なるほど!
>(?<=[^\s\w])(\w+)/g);
この部分を解読していて、
こんな方法もあるのかと感心してしまいました。
今はとりあえずspliceを使ってうまくいっているのですが、
バグが出るようならこちらの方法で試してみたいと思います。
ありがとうございました。
No.2
- 回答日時:
この文章だけからは「何を取り出すのか」が分かりません.
どんな文字列が来てもいいように, 言葉で「取り出すべきもの」を規定してください. それができなければ, プログラムにすることは不可能です.
案外
s/@@@(\d+)/g
くらいだったりして.
ご回答ありがとうございます。
言葉足らず過ぎてすみませんでした。
今回のケースでは、
逆に後で分割するために@@@という文字列を途中で足していました。
ですので取り出すべきものは、
@@@直後にある不特定数桁の数字というものでした。
このままだと分割するのに困ったので、
街頭数字の頭と末尾両方に@@@を入れることでなんとか解決することができました。
ありがとうございました。
No.1
- 回答日時:
まず、文字列をスペースでsplitします。
その配列の要素ひとつひとつに対し、
@@@を含むか否か、をジャッジします。
含むものだけを抜き出し、別の配列に格納します。
その配列の全ての要素に対し、
@@@を削除する処理を施します。
ご回答ありがとうございます。
論理的な処理順序はなんとか理解できていたのですが、
>含むものだけを抜き出し、別の配列に格納します。
この部分の方法が思いつきませんでした。
結局spliceという関数でなんとかすることができました。
ヒントをいただき、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Strawberry Perl for Windows ...
-
二次元配列のインデックスについて
-
VBAのautofilter、criteriaの配...
-
フローチャートを教えてください
-
複数のキーで配列をソートする...
-
VBA 多次元配列を用いてグルー...
-
文字の整列(printf)
-
perl このテキストファイルを簡...
-
リストボックスに縦スクロール...
-
マクロ Publicでの配列定義
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
perlで2次元配列をサブルーチ...
-
VB6で配列の最大値を簡単に求め...
-
画面を強制的に再描画させる方法
-
GIFアニメをループさせたくない
-
アクティブセルから、A列最終行...
-
Escキーを押すと、中断する時と...
-
Perlでハッシュや配列で重複す...
-
ループフリー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラスに配列を渡す方法
-
エクセルVBAでTransposeの不思議
-
Excel VBA ユーザーフォームの...
-
VBAのautofilter、criteriaの配...
-
Strawberry Perl for Windows ...
-
二次元配列における要素数のは...
-
VB6で配列の最大値を簡単に求め...
-
リストボックスに縦スクロール...
-
文字の整列(printf)
-
ファイル名に日付・時刻を付与...
-
DataGridViewに配列の値を表示...
-
チェックボックスのperlでの値...
-
一致する要素が格納されている...
-
隣同士の数字を足し合わせる
-
perlで配列の要素が空なのを知...
-
条件に一致した塩基配列を含む...
-
perlで2次元配列をサブルーチ...
-
マクロ Publicでの配列定義
-
二次元配列のインデックスについて
-
perl 配列の要素数について
おすすめ情報