1 件の投稿を表示中 (合計 10 個)
  • 作成者
    投稿
  • #5204
    takane56
    メンバー

    正規表現を使って特定の文字に連番追加したいのですが、
    連番を追加するところで悩んでいます。

    MTタグでのHTMLソースになりますが、という風にしたいと思って
    色々調べて以下のようにしてみましたが

    検索する文字列: <¥$MTBlogURL¥$>¥d¥d¥d
    置換後の文字列: <$MTBlogURL$>post_?¥.html

    ※¥は小文字です。

    では連番が追加されないようです。
    連番以外はうまくいきました。

    この「?」の部分に12345・・・と連番を追加したいのですが
    可能でしょうか?

    #5210
    FLONT
    参加者

    takane56様

    正規表現を使って特定の文字に連番追加したいのですが、
    連番を追加するところで悩んでいます。

    正規表現を使って連番を追加するのは無理だと思います。
    ただし、連番が振ってあるものを別の形式に変換して加工することは可能です。

    ただし、以下のようにやりたいことが一部不明な点があるので
    その辺をはっきりさせてください。

    上に書いてある例

    <option value="001″>あああ
    <option value="002″>いいい
    <option value="003″>ううう

          ↓↓↓

    <option value="post1.html”>あああ
    <option value="post2.html”>いいい
    <option value="post3.html”>ううう

    と下に書いてある例では

    検索する文字列: ¥d¥d¥d
    置換後の文字列: post_?¥.html

    やりたいことが微妙に違うようですが?
    ※postの後ろに_(アンダーバー)はいるのですか?

    また、3桁の数字をどう変換するかによって、
    一度の置換では出来ない場合があります。
    例えば、postの後ろに頭の0を取った数字が入るとか、
    数字は本当に3桁だけなのかとか、
    この辺の具体的にしたいことわからないと、
    回答できないので、よろしくお願いいたします。

    ちなみに¥(円マーク)には小文字はありません。
    半角/全角ならあります。

    #5220
    takane56
    メンバー

    FLONTさん、返信大変ありがとうございます。

    > 正規表現を使って連番を追加するのは無理だと思います。
    > ただし、連番が振ってあるものを別の形式に変換して加工することは可能です。

    あら、そうなんですかw
    無理やり考えていました。

    > やりたいことが微妙に違うようですが?
    > ※postの後ろに_(アンダーバー)はいるのですか?

    大変申し訳ありません、こちらの記述ミスでして

    <option value="post_0.html”>あああ
    <option value="post_1.html”>いいい

    このように
    postの次にアンダーバーが必要でした。

    > また、3桁の数字をどう変換するかによって、
    > 一度の置換では出来ない場合があります。
    > 例えば、postの後ろに頭の0を取った数字が入るとか、
    > 数字は本当に3桁だけなのかとか、
    > この辺の具体的にしたいことわからないと、
    > 回答できないので、よろしくお願いいたします。

    大変すいません、説明不足でした^^;

    変換元の数字は、常に3桁です。
    数字の値の前には必ず「0」を含んだ数字が入ります。

    例)

    001
    012
    088
    122
    550
    999

    最高値は「999」です。

    変換させる「post_」の後ろには「1」からではなく「0」から始まった連番が入ります。
    また1桁数字なら1桁、2桁数字なら2桁、と前に「0」はいらないです。

    例)

    post_0
    post_1
    post_7
    post_12
    post_59
    post_113
    post_211
    post_999

    最高値は「999」までです。
    (この数字はhtmlの数、つまりブログの記事数になるので、ほとんど使うのは2桁だとは思いますが100記事以上書く場合があるので一応^^;)

    最終的に以下のようになります。

    <option value="001″>あああ
    <option value="002″>いいい
    <option value="010″>さささ
    <option value="023″>ははは
    <option value="043″>わわわ

          ↓↓↓

    <option value="post_0.html”>あああ
    <option value="post_1.html”>いいい
    <option value="post_9.html”>さささ
    <option value="post_22.html”>ははは
    <option value="post_42.html”>わわわ

    > ちなみに¥(円マーク)には小文字はありません。
    > 半角/全角ならあります。

    確かにそうですね(笑)
    独学で学んでいるので言葉の使い方に間違いが多々ありますw ご了承ください

    #5227
    FLONT
    参加者

    takane56様

    返信いただいた内容ですと以下の置換を行ってください。

    1回目の置換
    検索する文字列:()00(d)
    置換後の文字列:1post_2.html

    2回目の置換
    検索する文字列:()0([1-9]d)
    置換後の文字列:1post_2.html

    3回目の置換
    検索する文字列:()([1-9]d{2})
    置換後の文字列:1post_2.html

    また、以下のマクロ(JavaScript)を保存しておけば一度で出来ますが、
    その辺の操作が分からなければ、再度質問してください。

    document.selection.Replace(“()00([1-9])”,”1post_2.html”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll | eeFindReplaceRegExp);
    document.selection.Replace(“()0([1-9]d)”,”1post_2.html”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll | eeFindReplaceRegExp);
    document.selection.Replace(“()([1-9]d{2})”,”1post_2.html”,eeFindNext | eeFindReplaceEscSeq | eeReplaceAll | eeFindReplaceRegExp);

    #5228
    takane56
    メンバー

    FLONTさん、返信ありがとうございます。

    グループ分けというのがあるんですね。勉強になります
    ただ・・これではまずいんです^^;

    このソースを実行した場合、

    <option value="001″>あああ
    <option value="002″>いいい
    <option value="010″>さささ

          ↓↓↓

    <option value="post_1.html”>あああ
    <option value="post_2.html”>いいい
    <option value="post_10.html”>さささ

    となってこれはこれで大変便利なんですが
    「グループ2の値 - 1」じゃないとダメなんです。

    <option value="001″>あああ
    <option value="002″>いいい
    <option value="010″>さささ
    <option value="030″>さささ
    <option value="530″>さささ
          ↓↓↓

    <option value="post_0.html”>あああ
    <option value="post_1.html”>いいい
    <option value="post_9.html”>さささ
    <option value="post_29.html”>さささ
    <option value="post_529.html”>さささ

    置換後の文字列に
    1post_2-1.html

    とやってもうまくいきませんでした。

    他に方法はなかったでしょうか?

    #5230
    FLONT
    参加者

    takane56 様

    数字を一つ減少させる点を見落としていました、
    失礼いたしました。

    ただ、数字を減少させることは正規表現では出来ません。
    以下のマクロ(JavaScript)を保存してご利用ください。

    Redraw = false;
    if( document.selection.IsEmpty ){
    document.selection.SelectAll();
    }
    var text = document.selection.Text;

    text = text.replace( /()(d{3})/g , function( $0 , $1 , $2 ){ return $1+”post_”+(parseInt( $2 )-1)+”.html” } );
    document.selection.Text = text;
    Redraw = true;

    #5231
    takuya
    参加者

    URL$> を URL$>{TAB} に置換して、文字列をEXCEL貼り付ける。EXCELに連番処理と書式処理を任せるのが楽だと思います。

    EXCELの限界行数66536行よりデータ量が多いならマクロでも良いですが。。。

    MTのタグなら、MTの繰り返しタグ使うのが正攻法だと思います。

    #5239
    takane56
    メンバー

    FLONTさん、返信大変ありがとうございます。

    この掲示板にいる人はかなり専門家のようですねぇ。(プログラマーでしょうか?)私はHP作成・ブログばっかりなもので数式とか苦手っす^^;

    ちょっとうまくいきませんでしたので、
    今回は実際に活用するソースを例に書いてゆこうと思います。

    以下変換元です↓

    北海道・東北地方

    • <a href="001″ title=”北海道 “>北海道
    • <a href="002″ title=”青森県 “>青森県
    • <a href="003″ title=”岩手県 “>岩手県
    • <a href="004″ title=”宮城県 “>宮城県
    • <a href="005″ title=”秋田県 “>秋田県
    • <a href="006″ title=”山形県 “>山形県
    • <a href="007″ title=”福島県 “>福島県

    関東地方

    • <a href="008″ title=”茨城県 “>茨城県
    • <a href="009″ title=”栃木県 “>栃木県
    • <a href="010″ title=”群馬県 “>群馬県
    • <a href="011″ title=”埼玉県 “>埼玉県
    • <a href="012″ title=”千葉県 “>千葉県
    • <a href="013″ title=”東京都 “>東京都
    • <a href="014″ title=”神奈川県 “>神奈川県

    中部地方

    • <a href="015″ title=”新潟県 “>新潟県
    • <a href="016″ title=”富山県 “>富山県
    • <a href="017″ title=”石川県 “>石川県
    • <a href="018″ title=”福井県 “>福井県
    • <a href="019″ title=”山梨県 “>山梨県
    • <a href="020″ title=”長野県 “>長野県
    • <a href="021″ title=”岐阜県 “>岐阜県
    •  ・
       ・(以下省略)

      上記ソースで試した所、

      北海道・東北地方

      • <a href="post_0.html” title=”北海道 “>北海道
      • <a href="post_1.html” title=”青森県 “>青森県
      • <a href="post_2.html” title=”岩手県 “>岩手県
      • <a href="post_3.html” title=”宮城県 “>宮城県
      • <a href="post_4.html” title=”秋田県 “>秋田県
      • <a href="post_5.html” title=”山形県 “>山形県
      • <a href="post_6.html” title=”福島県 “>福島県

      関東地方

      • <a href="post_-1.html” title=”茨城県 “>茨城県
      • <a href="post_-1.html” title=”栃木県 “>栃木県
      • <a href="post_7.html” title=”群馬県 “>群馬県
      • <a href="post_8.html” title=”埼玉県 “>埼玉県
      • <a href="post_9.html” title=”千葉県 “>千葉県
      • <a href="post_10.html” title=”東京都 “>東京都
      • <a href="post_11.html” title=”神奈川県 “>神奈川県

      中部地方

      • <a href="post_12.html” title=”新潟県 “>新潟県
      • <a href="post_13.html” title=”富山県 “>富山県
      • <a href="post_14.html” title=”石川県 “>石川県
      • <a href="post_0.html” title=”福井県 “>福井県
      • <a href="post_0.html” title=”山梨県 “>山梨県
      • <a href="post_15.html” title=”長野県 “>長野県
      • <a href="post_16.html” title=”岐阜県 “>岐阜県
      • このようにpost_の次に「-」や「0」の数字が挿入されてしまう不具合がありました。

        大変お手数お掛けしていますが
        修正していただけるとありがたいです

    #5244
    FLONT
    参加者

    takane56様

    失礼いたしました。
    parseIntの使用法の誤りでした。
    以下のものを保存してお使いください。

    Redraw = false;
    if( document.selection.IsEmpty ){
    document.selection.SelectAll();
    }
    var text = document.selection.Text;

    text = text.replace( /()(d{3})/g , function( $0 , $1 , $2 ){ return $1+”post_”+( parseInt( $2 , 10 )-1)+”.html” } );
    document.selection.Text = text;
    Redraw = true;

    #5259
    takane56
    メンバー

    FLONTさん、こんばんわ。

    意味を調べてましたが、難しいですねぇ^^;

    上記ソースでうまくいきました!便利です。
    大変ありがとうございます

1 件の投稿を表示中 (合計 10 個)
  • このトピックに返信するにはログインしてください。