WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:Perlの正規表現について

0:[投稿] みかん [2002/03/06 13:05 ][環境:WIN+IE WIN系+Perl]

はじめまして、みかんと申します。
Perl初心者です。

テキストファイルの中に下記のような内容があります。
------ここから
<no:1><name:bob><pet:arex>
<no:2><name:mark><pet:pochi>
<no:3><name:lisa>
<no:4><name:wood><pet:jon>
------ここまで

このファイルを1行ずつ読み込んでいき
<name:xxxx>のフィールドにaという文字
があった場合は$nameに1を入れ、そうでなければ0を入れるということをしたいのですが、うまく行きません。原因は後ろの<pet:xxx>フィールドの中にaという文字がある場合でも$nameに1が入ってしまうためです。<pet:xxx>フィールドはあったり、なかったりします。
下記のようにプログラム内に記述しているのですが、どこが悪いのでしょうか・・・・

if ($line =~ /<name:(.*?)a(.*?)>/) {
  $name[$l] = 1;
} else {
  $name[$l] = 0;
}

ご教授頂けませんでしょうか ((_ _〃)


1:[回答] abc [2002/03/06 13:23 ]

このデータ書式では、<name:~>フィールドにaが無かった場合、
<pet:~>フィールドのaにまでマッチしてしまうわけですよね。
根本的な解決では無いような気もしますが、<pet:~>フィールドが無い時も、
<name:~><と最後に<をつけてしまうというのはどうでしょうか。


2:[回答] ● [2002/03/06 13:58 ]

if ($line =~ /<name:[^>]*a/) {


3:[完了] みかん [2002/03/06 18:24 ]

abcさん、●さんご回答ありがとうございました。

●さんよりご教授頂いた方法で解決したしました。
本当にありがとうございます。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World