-PR-

解決済みの質問

質問No.6674287
困ってます
困ってます
お気に入り投稿に追加する (0人が追加しました)
回答数4
閲覧数337
Perl ファイル一気読み後の正規表現について
Perlで以下の通り、
htmlファイルを全て読み込んだ後に正規表現を当てたいのですが、うまくいきません。
恐縮ですが、原因をご存知の方いらっしゃいましたら教えて頂けませんでしょうか。
また、他に良い解決方法がありましたら教えて頂けると幸いです。
※PC環境はwindows7, perl5.12です。情報に不足がございましたらご指摘下さい。

-----
#--test.html(左側の数字は行数)
000001 <dl>
000002 <dt>aaa</dt>
000003 <dd>12345</dd>
000004 </dl>

(中略)

120001 <dl>
120002 <dt>bbb</dt>
120003 <dd>6789</dd>
120004 </dl>

#--test.pl
open IN , "test.html";
local $/ = undef;
$data = <IN>;
close IN;

$data =~ s|<td>bbb</td>|<td>ccc</td>|;
print "$data\n";
-----

ファイルの始めの方だと当たるのに、後半では当たりません。
正規表現の対象として大きすぎるんでしょうか・・・。

$data =~ s|<td>aaa</td>|<td>ccc</td>|;
は、当たりますが

$data =~ s|<td>bbb</td>|<td>ccc</td>|;
だと当たりません。

どうぞよろしくお願いいたします。
投稿日時 - 2011-04-17 12:12:34

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

回答No.4
参考までに、ideoneでの実行;

http://www.ideone.com/lziei

質問文の例は普通に動いてるので、SJIS変換してるあたりに原因があるかも。ないかも。
投稿日時 - 2011-04-17 18:10:25
この回答を支持する
(現在0人が支持しています)
お礼
お礼遅くなり申し訳ございません。
ご確認頂きありがとうございました。
(ideone.com 知りませんでした、こんなサイトがあるんですね)

ちょっと時間がとれなくて細かい検証はできていないんですが、
仰る通りどうやらSjis.pmが悪さしていたようです。
投稿日時 - 2011-04-18 20:26:47

ベストアンサー以外の回答 (3)

回答No.3
確認ですが, この例で
1行ずつ処理したときには想定した通りの結果になっている
のですね?
投稿日時 - 2011-04-17 14:40:03
この回答を支持する
(現在0人が支持しています)
補足
ご質問頂きありがとうございます。
はい while(<>) で処理した場合は想定通りの結果になります。

ただ一点補足がございます。
上記の質問では、関連は薄いと思いあえて記載しなかったんですが、
このhtmlファイルはSjisテキストで、それをSjis.pmを使って処理を行おうとしています。

通常のエンコードした場合で試していなかったので
ちょっと後で試してみようと思います。
投稿日時 - 2011-04-17 17:01:07
回答No.2
open IN , "test.html";
my $data;
{
local $/ = undef;
$data = <IN>;
}
close IN;

でスコープに入れてはどうでしょう。$/ undefしたままで他の処理を行おうとすると予期せぬ結果になるかもしれません。
投稿日時 - 2011-04-17 13:56:15
この回答を支持する
(現在0人が支持しています)
お礼
ご回答頂きありがとうございます。

スコープ試してみて結果は変わらなかったんですが、
そもそもスコープに入れる発想が無かったので勉強になりました。
ありがとうございました。
投稿日時 - 2011-04-17 16:53:50
回答No.1
td? dt?
投稿日時 - 2011-04-17 12:40:01
この回答を支持する
(現在0人が支持しています)
補足
大変失礼しました。
正規表現中の "td" は "dt" の間違いです。
ご指摘頂きありがとうございました。
投稿日時 - 2011-04-17 12:50:33
この質問は役に立ちましたか?
0人が「このQ&Aが役に立った」と投票しています
もっと聞いてみる

関連するQ&A

この他の関連するQ&Aをキーワードで探す

別のキーワードで再検索する

同じカテゴリの人気Q&Aランキング

カテゴリ
Perl
-PR-
-PR-

特集

正しい方法で健康的な綺麗を手に入れよう!

お城、ボート、ツリーハウス、ユニークな物件満載!

親同士が気軽に情報交換できるコミュニティです。

同じカテゴリの人気Q&Aランキング

カテゴリ
Perl
-PR-

ピックアップ

-PR-