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



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つのマクロで簡潔させて、マクロや正規表現のよく分らない人も使いまわせるようにしたいです。

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

回答の条件
  • 1人3回まで
  • 登録:2006/09/07 17:29:11
  • 終了:2006/09/11 15:02:43

回答(3件)

id:mass3 No.1

mass3回答回数118ベストアンサー獲得回数152006/09/07 19:58:52

ポイント25pt

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

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

どうでしょうか?

id:exflower

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

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

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

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


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

2006/09/08 15:30:40
id:naleringar No.2

naleringar回答回数110ベストアンサー獲得回数52006/09/09 04:34:07

ポイント25pt

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

(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を別の言葉に置換しておいてから、また最後に戻せば直ると思います。

id:exflower

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


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


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

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

2006/09/11 14:53:49
id:junsub777 No.3

junsub777回答回数2ベストアンサー獲得回数02006/09/10 11:58:59

ポイント30pt

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

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

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


これでどうでしょうか?

id:exflower

おぉぉ。。

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


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


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

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


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

2006/09/11 14:58:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません