人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

秀丸置換/マクロで、以下の置換を行いたいのですが方法が分りません。どなたかお教えください。


HTMLにて、
(1) href="aaa/aaa.htm"
(2) href="aaa/"
(3) href="aaa/aaa.htm#top"
(4) href="aaa/aaa.htm?uid=NULLGWDOCOMO"
上記の様なパターンの記述があった場合に、
(1)と(2)の場合にのみ、リンクのパラメータとして「?uid=NULLGWDOCOMO」を付けたいのです。
(#とNULLGWDOCOMOを含まないリンクにのみ、置換を行いたい)

1ファイル内に上記の様な記述が何箇所あるのかは不明です。
秀丸マクロのreplaceallでNULLGWDOCOMOを含まないものを置換しようとしましたが上手くいきませんでした。
良い方法はないでしょうか?

できれば1つのマクロで簡潔させて、マクロや正規表現のよく分らない人も使いまわせるようにしたいです。

宜しくお願いいたします。

●質問者: noname
●カテゴリ:コンピュータ インターネット
✍キーワード:AAA href HTML TOP いもの
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● mass3
●25ポイント

replaceall "\\fhref=\"aaa/aaa.htm\\f\"" , "\\1\\?uid=NULLGWDOCOMO\"" , regular, nocasesense;

replaceall "\\fhref=\"aaa/\\f\"" , "\\1\\?uid=NULLGWDOCOMO\"" , regular, nocasesense;

どうでしょうか?

◎質問者からの返答

ごめんなさい。説明が少し足りなかったようなので補足させて頂きます。

「aaa」で置き換えてある部分は、何が入るかは決まっていません。

「../top/index.htm」かも知れないし「music/bn/」かも知れないし、それ以外の可能性もあります。

そして(4)のパターンの場合も、「?uid=NULLGWDOCOMO」の後に何かある可能性もあります。


#と「?uid=NULLGWDOCOMO」を含まないリンクにのみ、「?uid=NULLGWDOCOMO」を追加したいのです。


2 ● naleringar
●25ポイント

えっと、秀丸そのものは一度も操作したことがないので、もしダメだったらポイントなしでいいです。

(4) href="aaa/aaa.htm?uid=NULLGWDOCOMO" これから(?uid=NULLGWDOCOMO)を置換で取り払うと、(1) href="aaa/aaa.htm" と同じになるので、3パターンに減らせると思います(外したあとでまたつけて良いんですよね?)

(2) href="aaa/" は、/ の後に必ず、index.htm か index.html があるはずですよね? ということは、とりあえず、(/") を、仮にでも、(/index.htm")に変換してしまうと、これも(1) href="aaa/aaa.htm" と同じになって、パターンが1つに減らせる気がします。

(2)が (/") 終わりじゃないと困る場合は、zzzzzzzzzzz.htm とか、絶対使わないhtmファイル名で仮に埋めといて、あとでとっぱらえばいいと思います。

で、(1) href="aaa/aaa.htm" の1パターンに減った(.htmと .html どっちかわからないから本当は2パターン)ので、最後に正規表現置換で、

a href="([.]+)?htm">を

a href="\1htm?uid=NULLGWDOCOMO">に置換しちゃえないでしょうか?

ただ、私は正規表現に自信がないので、記述が間違えてる可能性はあります。そのあたりは詳しい方に見ていただくか、本か、試行で確認してください。

※あと、#の後ろにhtmという言葉が入ってると巻き込まれちゃうと思いますが、もしある場合は、最初に#htmを別の言葉に置換しておいてから、また最後に戻せば直ると思います。

◎質問者からの返答

naleringarさん、ご回答ありがとうございます。


大変申し訳ないのですが、自己解決しましたのでこれにて終了させていただきます。


結局、「CGI等のURLの場合は付加しない」という条件も出てきたため、

「/"」と「/.+\.htm"」の場合のみに追加すれば良くなりました。


3 ● junsub777
●30ポイント

置換でできそうな気もしますが、、、。

考えるのが面倒だったので、マクロを書いてみました。

http://d.hatena.ne.jp/junsub777/20060910/1157857011


これでどうでしょうか?

◎質問者からの返答

おぉぉ。。

わざわざありがとうございます!


上記の通り自己解決したのですが、前から気になっていた事でしたので回答を開いてみました。


実行した結果、意図したとおりの動作をしました。

確認が出るのも、漏れがなくて素敵です。


次同じような事をする際には参考にさせて頂きます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ