- 作成者投稿
- 2007年11月16日 2:02 am #5204takane56メンバー
正規表現を使って特定の文字に連番追加したいのですが、
連番を追加するところで悩んでいます。MTタグでのHTMLソースになりますが、という風にしたいと思って
色々調べて以下のようにしてみましたが検索する文字列: <¥$MTBlogURL¥$>¥d¥d¥d
置換後の文字列: <$MTBlogURL$>post_?¥.html※¥は小文字です。
では連番が追加されないようです。
連番以外はうまくいきました。この「?」の部分に12345・・・と連番を追加したいのですが
可能でしょうか?2007年11月16日 4:46 am #5210FLONT参加者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桁だけなのかとか、
この辺の具体的にしたいことわからないと、
回答できないので、よろしくお願いいたします。ちなみに¥(円マーク)には小文字はありません。
半角/全角ならあります。2007年11月16日 6:54 pm #5220takane56メンバー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 ご了承ください2007年11月17日 12:16 am #5227FLONT参加者takane56様
返信いただいた内容ですと以下の置換を行ってください。
1回目の置換
検索する文字列:()00(d)
置換後の文字列:1post_2.html2回目の置換
検索する文字列:()0([1-9]d)
置換後の文字列:1post_2.html3回目の置換
検索する文字列:()([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);2007年11月17日 4:22 pm #5228takane56メンバー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とやってもうまくいきませんでした。
他に方法はなかったでしょうか?
2007年11月18日 5:25 am #5230FLONT参加者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;2007年11月18日 5:56 am #5231takuya参加者URL$> を URL$>{TAB} に置換して、文字列をEXCEL貼り付ける。EXCELに連番処理と書式処理を任せるのが楽だと思います。
EXCELの限界行数66536行よりデータ量が多いならマクロでも良いですが。。。
MTのタグなら、MTの繰り返しタグ使うのが正攻法だと思います。
2007年11月18日 7:28 pm #5239takane56メンバー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」の数字が挿入されてしまう不具合がありました。
大変お手数お掛けしていますが
修正していただけるとありがたいです2007年11月19日 2:48 am #5244FLONT参加者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;2007年11月19日 7:07 pm #5259takane56メンバーFLONTさん、こんばんわ。
意味を調べてましたが、難しいですねぇ^^;
上記ソースでうまくいきました!便利です。
大変ありがとうございます - 作成者投稿
- このトピックに返信するにはログインしてください。