正規表現で指定文字のみを抽出No.04603
ぷれりゅ〜ど さん 05/03/29 10:00
 
こんにちは、ぷれりゅ〜どです。

デカいログファイルが有りまして、
キー部分のみを抜き出したいのですが、
そういうマクロは有りませんでしょうか?

grepすると行そのものが抜き出せるのは分かってますが、
一行が長いため、指定した文字列のみをファイルに
書き出したいのです。

マクロライブラリを覗いたのですが、何て言葉で検索すれば
良いやら分かりませんで。

英数字で構成された文字列なので正規表現そのものは
大したモンじゃないのですが。

既に有りそうな気がしたので、こちらに書き込ませて
頂きました。よろしくお願いします。

[ ]
RE:04603 正規表現で指定文字のみを抽出No.04604
Buckeye さん 05/03/29 19:21
 
ぷれりゅ〜どさん、

マクロ自体、それほど難しいものにはなりませんが……マクロなしでやるなら

・当該正規表現でgrepをかける。
・できたリストに対し、タグ付き正規表現置換で当該部分の前と後ろを削除する。

この2段階で、一応、お望みの結果が得られるんじゃないかと思います。

Best regards,
Buckeye

[ ]
RE:04604 正規表現で指定文字のみを抽出No.04605
ぷれりゅ〜ど さん 05/03/29 21:58
 
Buckeyeさん、こんばんは。

タグ付き正規表現とは、\fのことですよね?
実は、余り理解できてなかったりしますが、
ちょっと頑張ってみます。

ご助言ありがとうございました。

[ ]
RE:04605 正規表現で指定文字のみを抽出No.04606
Buckeye さん 05/03/30 04:13
 
ぷれりゅ〜どさん、

>タグ付き正規表現とは、\fのことですよね?
>実は、余り理解できてなかったりしますが、
>ちょっと頑張ってみます。

後半の置換時、正規表現にチェックを入れ、以下のように設定してみてください。

「検索」窓→「.*\f正規表現\f.*」(正規表現はgrepで使用したもの)
「置換」窓→「\1」

これで置換を実行すれば、各項目の「正規表現」部分だけが残ります。

問題は、正規表現にヒットする部分が各行に複数箇所あるときですね(上記処理
だと1つだけを残して後は削除されてしまう)。そういうときは、

・タグ付き正規表現を用いて正規表現の直前か直後で改行する

という処理を行ってから上記の置換をすればいいでしょう。直前か直後かは、正
規表現が最長一致かどうかで決まります。基本的には最長一致なので、直後に改
行(上記で置換窓を「\0\1\n」として置換)とし、ヒットがなくなるまでくり返
します。最短一致が使えるHMJRE.dllなら、↓で全置換すれば、1回の処理で正規
表現にヒットする部分の直前すべてに改行が入ります。

「検索」窓→「.+?\f正規表現\f」
「置換」窓→「\0\n\1」

Best regards,
Buckeye

[ ]
RE:04606 正規表現で指定文字のみを抽出No.04607
Buckeye さん 05/03/30 15:06
 
あちゃ、複数回、出てくるときの処理、間違えた(^^;)

複数回、出てくると、正規表現だけで処理するのはきついかも。できないことは
ないんですが……例を挙げても不要かもしれないので、とりあえず、やめときま
す。必要なら言ってください>ぷれりゅ〜どさん

Best regards,
Buckeye

[ ]
RE:04607 正規表現で指定文字のみを抽出No.04608
ぷれりゅ〜ど さん 05/03/31 12:08
 
Buckeyeさん、お返事遅くなりました。

色々と気遣って頂きましてありがとうございます。
タグ付き正規表現の書き方が良く分かりました。

「.*\f正規表現\f.*」→「\1」で、使えました。
誠にありがとう御座いました <(_ _)>

[ ]