トップページ⇒php
981コメント301KB

正規表現道場@2ch Part4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん05/01/17 11:51:25ID:SH1ygN1P
Perlに限らずスクリプト系言語で大活躍の正規表現。
このスレは有用そうな正規表現を紹介したり、
どう表現したらいいかわからないときに質問をしたりするためのスレッドです。
質問するときは使用言語や得たい結果をなるべく詳しく書きましょう。

註:& や " を書くときには、& " と描いておきましょうね。

Perlメモ
 http://www.din.or.jp/~ohzaki/perl.htm
正規表現メモ
 http://www.kt.rim.or.jp/~kbk/regex/regex.html
Regex::Diagram.pm
 http://www.cc.rim.or.jp/~midorin/mad-p/RegexDiagram.html
正規表現
 http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/PRC2kRegex/
UNIX正規表現入門 目次
 http://www01.u-page.so-net.ne.jp/jc4/hiroyuki/rex_index.html
Regular Expression(Riue ちゃんの正規表現講座) - Index
 http://www.sixnine.net/regexp/

ほとんどは↓のリンク集にまとまっています。
正規表現最新リンク集2002
 http://www2.famille.ne.jp/~akio1998/l_grep.html

過去スレ
正規表現道場@2ch
 http://pc.2ch.net/test/read.cgi/php/996105815/
正規表現道場@2ch Part2
 http://pc2.2ch.net/test/read.cgi/php/1038146241/
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
 http://pc5.2ch.net/test/read.cgi/php/1069245758/
0002nobodyさん05/01/17 13:15:29ID:???
(´・ω・) 2ゲットしちゃった
0003nobodyさん05/01/17 21:55:47ID:???
余裕で3ゲト
0004nobodyさん05/01/17 22:04:02ID:???
  。
屁
0005nobodyさん05/01/17 22:30:18ID:???
perlなんですが、

$msg = "組織運営図";
if ( $msg =~ /(.*)運営(.*)/ ){
print "ok. $1$3\n";
} else {
print "NG\n";
}

上のコードで okに行って欲しいんですが、
マッチしてくれません…。
何か根本的な勘違いしてますでしょうか。
0006nobodyさん05/01/17 22:49:27ID:???
>>5
文字コードは Shift_JIS だよね?あと $1$3 じゃなくて $1$2 だよね?
Perl 5.8 を使ってるなら、最初で use encoding 'Shift_JIS'; としてみる。
それ以前のバージョンの Perl ならとりあえず /(.*)\Q運営\E(.*)/ としてみる。
0007nobodyさん05/01/17 23:11:27ID:???
本題とずれるけど、最初のサブパターンは(.*?)にしたほうが効率いい。
0008505/01/18 09:38:37ID:???
>>6,7
use encoding 'Shift_JIS';
これでいけました。

こんな単純なことだったとは…
これで昨日一日つぶしちゃった…orz
激しく感謝ですw
0009nobodyさん05/01/18 16:31:30ID:???
Speeeeedと言う置き換えソフトを使っています。
ヘルプには
・メタ文字 \Gは使用できません。
・'/'はエスケープする必要はありません。
修飾子は以下の3つをサポートしています。
k  文字を日本語(シフトJIS)として扱いします。
m 文字列を複数行として扱います。
i  大文字と小文字を区別しないで検索します。
と、あります。

--------この下が一行目-------
スレッド名
Thu, 29 Jan 2004 17:27:16 GMT
1002
0

http://hoge.com/bbsname
3
0


0
1075476984
0
-----ここまで--------
の2chブラウザのidxファイルを置き換えて
3行目の一文字目("1002"の"1")が1で、
3行目が4桁である時に
7行目を"3"にしたいのですが
speeeeedの検索文字列と置き換え文字列の欄には何を入れれば良いのでしょうか?

よろしくお願いします。
0010nobodyさん05/01/18 17:37:11ID:TA2apQcG
>>9
「・・・で・・・である時に」なんていう条件分岐の機能は持ってないだろ。
0011nobodyさん05/01/18 19:28:22ID:???
>>9
修飾子 m をセットして、検索文字列、置換文字列をそれぞれこんな感じかな。
\A(.*\n.*\n)(1\d\d\d\r\n)(.*\n.*\n.*\n)(.*\n)
$1$2$3\r\n
0012nobodyさん05/01/19 03:18:24ID:hI5VxZ7o
「ある文字列を含んでいたら」という判断をさせたいのですが、
どんな風に記述すればよいでしょうか?
0013nobodyさん05/01/19 03:21:30ID:???
>>12
if (/ある文字列/)
00141205/01/19 03:40:05ID:hI5VxZ7o
言い方が悪かったですね、
変数がある文字を含んでいたら、という判断をさせたいのです
0015nobodyさん05/01/19 03:41:19ID:???
if (変数 =~ /ある文字列/)
0016nobodyさん05/01/19 04:29:16ID:???
$_ = 変数;
if (/ある文字列/)
0017nobodyさん05/01/19 04:41:05ID:???
>>14
判断は正規表現とは関係ない。
それはただの条件分岐。
0018nobodyさん05/01/19 14:27:09ID:???
>>10
プログラム側の処理を分けるのは制御構造の役割だが、
正規表現内部では、条件付きサブパターンというのがある。
0019nobodyさん05/01/19 15:32:02ID:???
>>18
特定の言語での独自拡張を持ち出したってしょうがないだろ
0020905/01/19 16:01:45ID:???
>>11
ありがとうございました。
0021nobodyさん05/01/19 16:04:47ID:???
PCERはC言語だっけ
正規表現を独自拡張してない実装ってどれのこと?
0022nobodyさん05/01/19 16:39:56ID:???
>>21
PCRE
0023nobodyさん05/01/19 16:48:15ID:???
>>18,21
条件付パターンマッチと言っても、変遷で表現できるので、正規表現で解が求まる
ペールはたまたま、読みやすさかなんかのために、独自の表記方法を導入してるが、
処理としては普通。実装とは関係ない。abcはabならcにマッチする、というのと変わらん
0024nobodyさん05/01/19 16:57:37ID:???
>>23
そもそも組み合わせ爆発する「条件分岐」を事も無げに処理してくれるのがオートマトンさんのクールなところですよ
0025nobodyさん05/01/19 17:23:49ID:???
>>20
どいたしまして。
Speeeeed は初めて知ったので自信無かったけどうまくいったみたいでよかった。


なんだか話題が変な方向に行ってるみたいだけど、
>>12=14 が実装言語に何を使っているか限定せずに質問を始めたのがまずい気がする。

質問するひとは、はじめに何使ってるかをちゃんと示しておくべきだと思う。
0026nobodyさん05/01/19 17:30:52ID:???
関係ないけど、丸投げ体質の奴ってどこまでも果てしなく丸投げるよな
0027nobodyさん05/01/19 18:42:24ID:???
おまいら前スレ埋めれ
0028nobodyさん05/01/20 02:59:30ID:???
丸投げしちゃう
0029nobodyさん05/01/20 20:17:30ID:???
EUC-JPの漢字だけにマッチするようにしたいのですが
下記だとどうやら全角英数にもマッチしてしまうみたいです。

preg_match('/[\xB0\xA1-\xF4\xA4]/', $str)

どのようにしたら漢字だけにマッチするようになるでしょうか?
0030nobodyさん05/01/21 11:13:19ID:ALcAsVlr
1005hw9fCDDLlBeZ0%253D
を
1005hw9fCDDLlBeZ0
にしたい(ようは、%以降の文字列を削りたい。%は1回しかでてこない)
にはどうすればいいでしょか?
なお、php4です。

$srt_o = preg_replace("/^(.*)(\%.*)(.*)$/i", "$1$3", $srt_o);
でもうまくいかず・・・
00313005/01/21 11:22:49ID:ALcAsVlr
むだをはぶいて、以下のようにしましたが
変換されずでしたわ・・・

$srt_o = preg_replace("/^(.*)(\%.*)$/i", "$1", $srt_o);
00323005/01/21 11:25:14ID:???
すいません、仕様変更で(汗)
、最後に出てきる%の文字列以降を削除する方法を教えてくださいませ
0033nobodyさん05/01/21 11:25:24ID:???
>>30
$str = '1005hw9fCDDLlBeZ0%253D';
$str = explode('%',$str,1);
var_dump($str);

で。正規表現(゚�听)イラネなときは出来るだけ使わない。
0034nobodyさん05/01/21 11:27:07ID:???
それなら正規表現使わんでもstrpos+substrとかexplode+array_shiftでも可能だけど
とりあえずpreg_replace('/%.*/', '', $str_o);
0035nobodyさん05/01/21 11:29:12ID:???
「最後に」ってことならstrrpos+substrの組み合わせか、
preg_replace('/%[^%]*$/', '', $str);
%はエスケープ不要よ。
00363305/01/21 11:30:24ID:???
>>30
訂正
$str = '1005hw9fCDDLlBeZ0%253D';
$str = explode('%',$str,2);
var_dump($str);



0037nobodyさん05/01/22 16:28:46ID:Z5CU+gTj
レベルの高い会話の中申し訳ありません。

2
00:02:19,916 --> 00:02:21,084
I can't move!

3
00:02:24,879 --> 00:02:27,215
Help me! I can't move!

4
00:02:27,882 --> 00:02:28,591
Oh my god!

このような文字列のtxtファイルを英語の部分のみ下のように取り出したいのですが
I can't move!
Help me! I can't move!
Oh my god!

いいソフトはありますかと聞いたところ正規表現ならできると聞き、このスレに来ました。

上の条件を満たすにはどのようにすればいいのでしょうか?
0038nobodyさん05/01/22 16:48:23ID:???
>>37
「ソフトありますか」からここに来るのがいまいちよくわからんな。
正規表現の書き方が知りたいのか?
できるけど正規表現が使えるソフトかなんらかのスクリプトなどが
ないと意味ないぞ。
0039nobodyさん05/01/22 17:04:14ID:Z5CU+gTj
>>38
正規表現が使えるソフトは自分でみつけました。
あとはそこに%$?みたいな記号を入れるのですが、それがわからないのです。
0040nobodyさん05/01/22 17:06:17ID:???
>>37
grepでいいでしょ。

明らかに板違いだね。

ココから来たのかよ。
気軽に「こんなソフトありませんか?」 6
http://pc5.2ch.net/test/read.cgi/software/1104587671/695

とりあえず、放置推奨 >all
0041nobodyさん05/01/22 17:08:33ID:???
>>39
しょうがないな。

そのソフト名が俺らにはわからんから、アドバイスするのは不可能。
0042nobodyさん05/01/22 17:31:54ID:???
>>39
>>1から調べられる
0043nobodyさん05/01/25 07:32:45ID:???
>>29
$strが漢字一文字の時マッチ。
preg_match("/^[\xb0-\xff][\xa0-\xff]$/", $str)

意図が今ひとつ分からないから、こんなもんで。
0044nobodyさん05/01/26 10:23:23ID:???
「」に囲まれていないタグ(<と>)を<、>に変換したいのですがどのようにすればよいでしょうか?
逆に囲まれているというのは出来るのですが囲まれていない方が分からないです。。。
0045nobodyさん05/01/26 10:27:00ID:???
すいません。上の変換後の文字は「&lt;」「&gt;」です。
0046nobodyさん05/01/26 13:29:10ID:???
>>44
囲まれているのができるのならば、

(1) 囲まれている<と>を適当にぶつからない文字or文字列に変換する。
制御文字とかがオススメ。
(2) 残った全ての<と>は囲まれていないのでお前の好きなように変換する
(3) (1)で変換したものを元の<と>に戻す

とすればいいはずだな。
0047nobodyさん05/01/26 13:30:28ID:???
>>44
Perl でいい?ちょっと苦しい感じもするけどこんなのとかどうでしょう?

$str =~ s/(?:(「.*?」)|(\<))/$1||"<"/ge;
$str =~ s/(?:(「.*?」)|(\>))/$1||">"/ge;
00484705/01/26 13:33:15ID:???
ガーソ!
置換後のダブルクォーテーションの中は「&lt;」「&gt;」です。

$str =~ s/(?:(「.*?」)|(\<))/$1||"&lt;"/ge;
$str =~ s/(?:(「.*?」)|(\>))/$1||"&gt;"/ge;
0049nobodyさん05/01/26 13:51:01ID:???
>>46 >>47
おおぅ!ありがとうございます。おかげで実現出来ましたm(_ _)m
0050nobodyさん05/01/26 20:12:30ID:???
>>44>>47
&amp;lt;って書きたいときには&amp;amp;lt;って書けばいいんだよ。
0051nobodyさん05/01/27 01:51:00ID:???
SQLのエスケープをしようと、「'」「\」「%」は全て「\'」「\\」「\%」に
変換する正規表現を書いてみました。

$sql =~ s/(\'|\\|\%)/\\$1/g;

正常に動作しているみたいなのですが、異常系のパターン
文字列等ございましたらご指摘いただきたい次第です。

宜しくお願いします。
0052nobodyさん05/01/27 14:08:43ID:???
>>51
それで特に問題ないように思うけど、
そもそもな話で、SQL のエスケープの仕様ってそれで良いの?っていうのと、
DB のライブラリにはエスケープする関数が用意されてることが多いので
そっちを調べた方が良い気がする。
0053nobodyさん05/01/28 02:31:31ID:???
>>52
ご返答有難うございます。
おそらくこの3つをエスケープすれば良いかと思うのですが、
他にもあるのでしょうかね、、

スレ違いっぽいので他のところで聞いてみます。
0054nobodyさん05/01/28 12:52:16ID:???
$a = "a1a2a3a4s1s2s3s4d1d2d3d4f1f2f3f4"
%a = $a =~ /([a-z])(\d)/g;
とすると
$a{a} == 1;
のようになりますが、括弧が4つの時に$2と$4だけを毎回ハッシュに渡すには
どうすればいいんですか?

%a = $a =~/(([a-z])\d)([a-z](\d))/g;

$2と$4だけを毎回%aに渡したいのです。
0055nobodyさん05/01/28 13:08:00ID:???
>>54
(?: ) で後方参照されなくなるので、こうするとか。

%a = $a =~/(?:([a-z])\d)(?:[a-z](\d))/g;
00565405/01/28 13:37:42ID:???
>>55
ありがとうございました!
00575405/01/28 13:50:40ID:???
すみませんもう一つHTMLに対しての正規表現なのですが、
$html_1 = qq|<input type="hidden" name="test1" value="a">|;
$html_2 = qq|<input type="hidden" value="a" name="test1">|;

%hiddenというのの中にnameの値をキーにvalueの値を値にしたハッシュを作成したいです。
わからないのは
my %hidden = $html_1 =~ m{<input type="hidden"\s*(?:name="(.*?)")?\s*(?:value="(.*?)")?.*?>};
$html_1に対してはこれでいいですが$html_2に対してはこれではキーがありません;

nameとvalueの順番がなんでもいいようにするにはどうすればいいですか?
0058nobodyさん05/01/28 18:09:31ID:???
>>57
一発でマッチする方法はあるかなあ?俺はこんなのしか思いつかなかった。
my $params = ($html =~ m{<input\s+type="hidden"([^>]+)>})[0];
my %hidden = $params =~ m{(?:\s+(\w+)="([^"]+)")}g;
0059nobodyさん05/01/28 22:09:22ID:???
>>57
素直に 2 回マッチさせるのが無難じゃないかなぁ,こんな感じで。

my %hidden = map {/\bname="(.*?)"/, /\bvalue="(.*?)"/} $html_2, ;
0060nobodyさん05/01/30 11:46:21ID:???
こんな?

my %hidden = $html_2 =~ /<input type="hidden".*?(?=.*?\bname="(.*?)").*?\bvalue="(.*?)".*?>/;

0061nobodyさん05/01/30 16:30:48ID:???
>>60
それいいなw
%hidden =
  $html =~
    /<input(?=.*?\btype="hidden")(?=.*?\bname="(.*?)")(?=.*?\bvalue="(.*?)").*?>/g;
こうすると type=hidden が後ろになっても取れるのかー。戴きます。
0062nobodyさん05/01/30 19:07:48ID:60wlVefX
質問です。

test.txtというファイルに
|aaaaaaaaaa|ddddddddddddd|ggggggggggggg|
|ffffffffff|hhhhhhhhhhhhh|jjjjjjjjjjjjj|
|mmmmmmmmmm|uuuuuuuuuuuuu|lllllllllllll|
というのが書かれているとします。

このファイルをUNIX上でcat test.txt | perl test.cgi
というコマンドを打ちます。

test.cgiの処理として
'<>'で標準入力からtest.txtの内容を読み込んで、
'|'を区切り文字としてテーブルタグに変換させる
正規表現を書ける人いませんか?

<table>
<tr><td>aaaaaaaaaa<td></td>ddddddddddddd<td></td>ggggggggggggg</td></tr>
<tr><td>ffffffffff<td></td>hhhhhhhhhhhhh<td></td>jjjjjjjjjjjjj<td></td>
<tr><td>mmmmmmmmmm<td></td>uuuuuuuuuuuuu<td></td>lllllllllllll<td></td>
</table>

というふうに変換したいのですが、うまく正規表現が書けません
0063nobodyさん05/01/30 19:10:42ID:60wlVefX
間違えました。

<table>
<tr><td>aaaaaaaaaa<td></td>ddddddddddddd<td></td>ggggggggggggg</td></tr>
<tr><td>ffffffffff<td></td>hhhhhhhhhhhhh<td></td>jjjjjjjjjjjjj</td></tr>
<tr><td>mmmmmmmmmm<td></td>uuuuuuuuuuuuu<td></td>lllllllllllll</td></tr>
</table>

↑のように変換したいのですが
0064nobodyさん05/01/30 19:14:46ID:???
書ける人いませんか?  という質問か。
ま、いくらでもいます。
0065nobodyさん05/01/30 19:17:56ID:60wlVefX
>>62
どのような正規表現で処理したら良いのか教えてください。
0066nobodyさん05/01/30 20:23:18ID:???
>>62
行頭の|を<tr><td>に置き換え。s/^\|/<tr><td>/;
行末の|を</td></tr>に置き換え。s/\|$/<\/td><\/tr>/;
その他の|を</td><td>に置き換え。s/\|/<\/td><td>/g;
<table></table>は適当に付ける。
0067nobodyさん05/01/30 21:16:39ID:???
Perlで、
\Q〜〜\E
はどういう意味ですか?
0068nobodyさん05/01/30 21:23:52ID:???
>>67
>>1
0069nobodyさん05/01/30 21:44:03ID:???
各サイトでCtrl+Fしてみましたが、\Qも\Eも見つかりませんでした
0070nobodyさん05/01/30 22:24:11ID:???
>>69
誰が Ctrl+F しろと言った?見つかるまで全て読めよ。
0071nobodyさん05/01/31 01:31:35ID:???
いや、普通にマニュアル読んだほうが早いが・・
0072nobodyさん05/01/31 07:14:59ID:???
すみません、たまたまJAVAスレを見ていたら書いてありました;
0073nobodyさん05/01/31 12:58:10ID:???
>>70
調子こいてんじゃねーよ。雑魚が。
0074nobodyさん05/01/31 13:13:56ID:???
m9(^Д^)プギャーーー!!
0075nobodyさん05/02/02 10:56:57ID:hb9v8KSn
すみません。
若気の至りで、アクセス解析を読み込むためのJSファイルをHTML文書の頭に付けてたのですが、
思い直して</body>直前に入れなおしたいと思ったのですが、

speeeeed!(k,m,iオプション有)で、置換する際に、

<body><script type="text/javascript" src="foo.js"></script>
本文
</body>

・bodyとscriptの間に改行はない
・bodyにidが振られている場合もある
で、

<body(.*?)>(<script.*?script>)(.*?)</body>
↓
<body$1>$3$2</body>

とやってみたのですが、うまくいきませんでした。

ためしに、
<script.*?script>だけでマッチングを試してみたのですが、
<script type="text/javascript" src="foo.js"></script>にマッチしませんでした。

どう書き直したらよいのでしょうか?
全く根本的に間違ってるような予感がしますが、お教え下さいますよう宜しくお願いいたします。
0076nobodyさん05/02/02 12:18:04ID:???
>>75
<body(.*)>(<script.*script>\r\n)((.*\r\n)*)</body>

<body$1>\r\n$3$2</body>
0077nobodyさん05/02/02 15:04:00ID:???
perlで文中の"&"を"&"に変換したいと思ってます。
でも"¥"などの実体参照化されてる部分の"&"は変換しません。
で自分なりに考えたのですが↓

$text="<p>キュウリ&ナス=¥200</p>";
$text=~s/&[^(yen;|euro;|amp;|copy)]/&/g;
print "$text¥n";

を実行すると、結果が

<p>キュウリ&ス=¥200</p>

となり、うまくいきません。
2行目の正規表現がおかしいと思うのですが、どう変えたらいいのでしょうか?
よろしくお願いします。
0078nobodyさん05/02/02 15:10:51ID:???
どこから突っ込んだものか・・・
00797705/02/02 15:12:58ID:???
再びすいません実体参照部分が化けてしまいました、文中の全角記号、英字は実際は半角です;;

perlで文中の"&"を"&amp;"に変換したいと思ってます。
でも"&yen;"などの実体参照化されてる部分の"&"は変換しません。
で自分なりに考えたのですが↓

$text="<p>キュウリ&ナス=&yen;200</p>";
$text=~s/&[^(yen;|euro;|amp;|copy)]/&amp;/g;
print "$text¥n";

を実行すると、結果が

<p>キュウリ&amp;ス=&yen;200</p>

となり、うまくいきません。
2行目の正規表現がおかしいと思うのですが、どう変えたらいいのでしょうか?
よろしくお願いします。
0080nobodyさん05/02/02 15:33:41ID:???
>>77
これでどう?

$text =~ s/(?:(&(?:yen|euro|amp|copy);)|&)/$1?$1:"&amp;"/ge;
0081nobodyさん05/02/02 15:37:52ID:???
ここに居る人たちからすると10点くらいの答案だと思う
00828005/02/02 15:39:46ID:???
>>81
ならどこがどうダメとかこうしろとかくらい言ってくださいな。
0083nobodyさん05/02/02 15:41:22ID:???
この質問者にレスを打っただけで50点はかたいだろ。
00847705/02/02 15:41:45ID:???
>>80
難しすぎて分かりませんが、バッチリ出来ました!
ありがとうございます。
0085nobodyさん05/02/02 15:50:43ID:???
$text=~s/&[^(yen;|euro;|amp;|copy)]$/&amp;/g;
0086nobodyさん05/02/02 19:20:05ID:???
偉そうにしてるだけのカスがいるようだなw
ダメだとか言う前に自分のコード見せてみなm9(^Д^)プギャー
0087nobodyさん05/02/02 19:25:17ID:???
煽ってるだけの人も、変わらんかとm9(^Д^)プギャー
0088nobodyさん05/02/02 21:33:17ID:???
>>77
$text =~ s/&(?!(?:yen|euro|amp|copy);)/&amp;/g;
0089nobodyさん05/02/02 23:52:44ID:???
つーか問題は本当にこの4つだけでいいのかってことだろ。

HTML4 で使える文字実体参照
http://www.ne.jp/asahi/minazuki/bakera/html/reference/charref
0090nobodyさん05/02/02 23:56:25ID:???
$text =~ s/&$/&amp;/g;
0091nobodyさん05/02/03 04:21:06ID:???
考えてみたけど汎用的なのはどうやっても無理
0092nobodyさん05/02/03 04:59:36ID:???
>>89
それは >>77 が判断すればいいことで、わざわざそんな表を持ち出す話ではない。
0093nobodyさん05/02/03 06:34:35ID:???
>>92
77を100回読んで出直してください
0094nobodyさん05/02/03 06:43:00ID:???
一から教え込むスレじゃないんで、既存のを丸パクりしろって回答で100点じゃね。
0095nobodyさん05/02/03 07:26:47ID:???
>>94はやりチン包茎
0096nobodyさん05/02/03 09:12:37ID:???
m9(♥Д♥)プギャー
0097nobodyさん05/02/03 13:43:04ID:???
my %entref = (
yen => 1,
euro => 1,
amp => 1,
copy => 1,
# 気が済むまで並べる
);

$text =~ s/(?:(&(\w+);)|&)/$1&&$entref{$2}?$1:"&"/ge;
0098nobodyさん05/02/03 20:21:27ID:???
アイディア出す人は古い車輪に対するアドバンテージが何か書いてくれると助かる
0099nobodyさん05/02/03 20:27:30ID:???
見易さかな?
0100nobodyさん05/02/03 22:15:55ID:???
>>98
古い車輪はある?
0101nobodyさん05/02/03 22:25:28ID:???
「車輪」言いたかっただけちゃうんかと
■ このスレッドは過去ログ倉庫に格納されています