• 締切済み

文字の抜き取りについてソースを教えて下さい

$data1 = "<abcd>東京都港区赤坂六本木1丁目1-1</abcd>"; 上記の様に、$data1に入っているデータから 【東京都港区赤坂六本木1丁目1-1】 の部分のみを抜き取り $data2へ入れたい場合 どのようなソースになりますか? 下記のように記述してみましたが 誤りのようで うまく記述(print)されませんでした。 if ($data1 =~ /<abcd>(\D+)<\/abcd>/){ $data2 = $1; } print "$data2" ; 尚、【】内の文字列は随時変化します。 初心者ですので、ご教授をお願いします。

  • Perl
  • 回答数2
  • ありがとう数2

みんなの回答

  • kabaokaba
  • ベストアンサー率51% (724/1416)
回答No.2

\d は数字 \D は数字以外 住所には数字がある だからマッチしない. 一番単純なのは以下のような感じ. Perlのバージョンと実行環境が不明だから Windows上でPerl5.8以降を使ってると仮定したコードです. use strict; use warnings; use encoding q(shiftjis); my $data1 = "<abcd>東京都港区赤坂六本木1丁目1-1</abcd>"; my $data2; if ( $data1 =~ m{<abcd>(.*)</abcd>}gms ){ $data2 = $1; } print $data2;

unipre
質問者

お礼

回答ありがとうございました。 おかげさまで解決しました。 $data1 =~ m{<abcd>(.*)</abcd>}gms の部分が分からず 回答を基に手元の参考書を見ながら なるほど!と勉強させていただきました。 ありがとうございました。

  • salieri29
  • ベストアンサー率30% (7/23)
回答No.1

あまり詳しくなくて申し訳ないのですが。 $s =~ s/<abcd>//g; $s =~ s/</abcd>//g; こんな感じで前後の文字を置換して消してしまうのはどうでしょうか? あまりスマートなやり方ではないですが。

unipre
質問者

お礼

回答ありがとうございます。 $data1に代入されるデータは 実は複数行でして せっかく回答いただきましたが適用出来ませんでした。 一つの勉強として捉えたいと思います。

関連するQ&A

  • エクセルでの住所表示について

    たとえば、A1に東京都港区六本木6-10-1、A2に東京都港区赤坂3とデータが入っています。これをすべてハイフン以降を抜いた丁目までの 表示にしたいと思っています。(「丁目」の表示はいりません) 今は「=MID(A1,1,(SEARCH("-",A1)-1))」という関数を使っていますが、大量のデータにまとめて関数をかけるので、ハイフンのないA2はエラー表示になってしまいます。 そこで、ハイフンのあるものは上の関数の計算をして、ハイフンのない データは元のデータを返すようにしたいのですが、どうしたらいいでしょうか?

  • スペースで区切った文字列を分割する方法

    ◆EXCEL2002を使用してます。 ◆A1には、以下の住所(都道府県から始まり、ビル名まで)が入ってます。 ◆番地とビル名は、全てスペースで区切られています。 ◆例 東京都港区赤坂1丁目23番45号 ABCDEFGビル ●完成 B1 東京都港区赤坂1丁目23番45号 C1 ABCDEFGビル 上記のように スペースで区切られた文字列を分割する方法を教えてください。 よろしくお願いします。

  • 住所の漢数字変換について

    データベース内の住所のデータなのですが、 以下のような処理を行うことは可能でしょうか? SQL、プログラム等、やり方は問いません。 経験者の方がいましたら教えて頂けないでしょうか? 1.「丁目」と「番」を全角ハイフンにする。また、「号」を削除する。 2.漢数字をアラビア数字にする。 (例) 東京都港区六本木十丁目二十三番七号 ↓ 東京都港区六本木10-23-7

  • 東京での最寄の駅

    東京出張があり、下記住所の最寄の駅が知りたいです。よろしくお願いします。 (1)東京都港区赤坂8丁目5番 (2)東京都千代田区平河町2丁目6番

  • 東京都港区六本木3-1-27梅原ビルについて

    東京都港区六本木3-1-27梅原ビルについて 東京都港区六本木3-1-27梅原ビルについて調べているのですが、信頼出来るソースをご存知ですか? 現在フロアが空いているとのことで、賃貸を考えています。 おおよその坪単価なども分かれば教えてください。

  • エクセルのオートコンプリート

    Excel2000で、(あくまでも質問のための仮の例ですが、) 1行目に 「東京都港区麻布台1丁目1番7号メゾンメイフラワー503号室」 2行目に 「東京都港区麻布十番2丁目2番8号」 という具合に1つの「列」にデータを入力したいと思います。 最初の「東京都港区麻布台1丁目1番7号メゾンメイフラワー503号室」は自分で入力しなくてはいけませんが、 2つめの「東京都港区麻布十番2丁目2番8号」は、「と」を入力(私はローマ字入力なので「to」と打鍵)した時点で、 オートコンプリート機能で最初の「東京都港区麻布台1丁目1番7号メゾンメイフラワー503号室」が現れます。 途中までは同じなのですから、オートコンプリート機能で現れた文字列のうち、「東京都港区麻布」までを使うわけにはいかないのでしょうか。 また、1行目のデータの「東京都港区麻布」よりも後が長い場合もあるので、 EnterキーをおしてBackSpaceで消すということはあまりしたくないのです。 (コピー・貼り付けをしてもよいのですが、せっかくオートコンプリートで文字列が出てくるので、使えないかなあと思ったのです。) 過去にエクセルのオートコンプリートに関連する質問がありますが、質問内容は異なります。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=153931

  • 住所の番地とそのあとを分割したい

    住所の番地とそのあとを分割したい のです 例えば 「東京都港区赤坂1-2-3メゾン赤坂505」というデータがあった時に メゾン赤坂505のみをセル分割したいのです 番地は算用数字のみです どなたかご存じでしょうか?

  • 住所の番地とそのあとを分割したい

    住所の番地とそのあとを分割したい のです 例えば 「東京都港区赤坂1-2-3メゾン赤坂505」というデータがあった時に メゾン赤坂505のみをセル分割したいのです 番地は算用数字のみです どなたかご存じでしょうか?

  • ジャニーズのオーディションの一時審査を通過したのでジャニーズ事務所に呼ばれました

    ジャニーズのオーディションの一時審査を通過したのでジャニーズ事務所に呼ばれました、東京都港区赤坂8丁目 11番 20号と言われたのですが、ジャニーズファミリークラブというのが渋谷にあってそこで履歴書の募集をしています、本当にこの住所で良いのでしょうか?

  • 行列の入れ替え

    エクセルで行列を入れ替えたいのですが、下記のような 場合、やり方があるでしょうか?   以下のように縦に並んでいるデータを・・・・・ 1 東京都千代田区 神田1丁目 2 東京都千代田区 神田2丁目 3 東京都千代田区 神田3丁目 4 東京都千代田区 神田4丁目 5 東京都千代田区 神田5丁目 このような感じで1から900までデータがあります。 それを下記のように横列に並び替えたいんです。 1 東京都千代田区 神田1丁目 2 東京都千代田区 神田2丁目 3 東京都千代田区 神田3丁目 4 東京都千代田区 神田4丁目 5 東京都千代田区 神田5丁目 エクセルの横のセルの限界は255列という書き込みがあったんで、 50データ(150セル分)くらいに区切って行列を入れ替えを行うと 1 東京都千代田区 神田1丁目 2 東京都千代田区 神田2丁目 3 東京都千代田区 神田3丁目 このように並んでしまいます。 いっぺんに並べ替えるやり方はあるでしょうか?

専門家に質問してみよう