秀丸での置換についてNo.08012
heart さん 01/03/15 14:21
 
みなさんはじめまして。はーとともうします。
最近秀丸を使い始めました。置換機能についてお聞きしたいのですが

a1111a111a(置換前)
a1111b111a(置換後)

という文字列があります。左から数えて6バイト目のaだけをbに置き換えたいのです。
たぶん正規表現を使えば出来ると思うのですが、自分で
いろいろやってみてもうまくいかないのです。
あと6バイト目ではなく150バイトとかの場合.を150個書かなく
てはならないのでしょうか?うまい書き方、置換の仕方をおしえてください。よろし
くお願いします。

[ ]
RE:08012 秀丸での置換についてNo.08013
きいろいまふらあ さん 01/03/15 15:04
 
> a1111a111a(置換前)
> a1111b111a(置換後)

可変部分と固定部分がわからないとなんとも……。

例えば
a****a***a(*には任意の1文字が入る)

a****b***a
に置換したいならば

検索文字列:a....\fa\f...a
置換文字列:\0b\2

とします。正規表現のチェックはONで。

> あと6バイト目ではなく150バイトとかの場合.を150個書かなく
> てはならないのでしょうか?うまい書き方、置換の仕方をおしえてください。よろし
> くお願いします。

繰り返し回数は指定できないですね。
正規表現としては「.を150個」しかないです。
#私なら、用途に応じてマクロ書きます。

[ ]
RE:08012 秀丸での置換についてNo.08014
ひろ さん 01/03/15 15:35
 
 はーとさん今日は、ひろです。
> という文字列があります。左から数えて6バイト目のaだけをbに置き換えたいので
>す。
検索文字列:^......\fa
置換文字列:\0b
とします。ただこれは正確には 6 バイトではなく、6 文字になります。
                                                 ^^^^
> あと6バイト目ではなく150バイトとかの場合.を150個書かなく
> てはならないのでしょうか?うまい書き方、置換の仕方をおしえてください。
 基本的にはそうなります。
 何か規則性があればもっと簡単に書けますが、これだけの情報では...。

 ##そういえば、秀丸の正規表現は ? 回の繰り返しという表現は無いなあ〜。

[ ]
RE:08012 秀丸での置換についてNo.08015
かかし さん 01/03/15 17:08
 
かかしです、こんにちは。

>a1111a111a(置換前)
>a1111b111a(置換後)
>
>という文字列があります。左から数えて6バイト目のaだけをbに置き換えたいのです。
>たぶん正規表現を使えば出来ると思うのですが、自分で
>いろいろやってみてもうまくいかないのです。
>あと6バイト目ではなく150バイトとかの場合.を150個書かなく
>てはならないのでしょうか?うまい書き方、置換の仕方をおしえてください。よろし
>くお願いします。

正規表現で

^1{150}

と書くと「行頭から"1"の150個繰り返し」を表します。

秀丸についてくるデフォルトのdllではサポートしていませんが、

BRegIf.DLL(arimacさん作)
bregexp.dll(Babaさん作)

をそろえますと、使用できるようになります。

http://www.hi-ho.ne.jp/babaq/index.html
http://hidemaru.xaxon.co.jp/library/macro/bregif.html

を参考にしてみてはどうでしょう?

---かかし

[ ]
RE:08012 秀丸での置換についてNo.08016
heart さん 01/03/15 18:02
 
みなさん、早速の返信ありがとうございます。
おかげさまで置換うまくいきました。とくにかかしさんのDLL
のおかげでどんな位置でもできそうです。ありがとうございます。
あと、ひろさんにお聞きしたいのですが
検索文字列:^......\fa
置換文字列:\0b
検索文字列の\fの意味と置換文字列の\0の意味を教えていただけ
ないでしょうか??勉強不足で申し訳ありません。
よろしくおねがいします。

[ ]
RE:08016 秀丸での置換についてNo.08022
番頭++ さん 01/03/15 19:13
 
>検索文字列の\fの意味と置換文字列の\0の意味を教えていただけ
>ないでしょうか??勉強不足で申し訳ありません。
>よろしくおねがいします。

マクロのヘルプをみて、
また質問を投稿するのも案です。

[ ]
RE:08016 秀丸での置換についてNo.08025
TAKA さん 01/03/15 19:23
 
TAKA です。

>検索文字列の\fの意味と置換文字列の\0の意味を教えていただけ
>ないでしょうか??勉強不足で申し訳ありません。

これは、「タグ付き正規表現による置換」という機能になります。

秀丸のヘルプで「キーワード」に「タグ付き正規表現による置換に
ついて」を指定してみて下さい。詳しく載っています。

[ ]
RE:08016 秀丸での置換についてNo.08027
ひろ さん 01/03/15 19:30
 
 はーとさん今日は、ひろです。
> あと、ひろさんにお聞きしたいのですが
 名指しされてしまった(^^;。
> 検索文字列の\fの意味と置換文字列の\0の意味を教えていただけ
 秀丸では「\f」は正規表現中の区切りを表し、「\0」「\1」... はその区
切られた文字列を表します。

 詳しくはヘルプで「タグ付き正規表現による置換について」を見て下さい。

[ ]