行頭の文字を省く置換処理No.03338
SAS さん 99/05/21 05:18
 
はじめまして。
秀丸 Ver3.01 の置換処理について質問があります。

////
という行があったとして、行頭の// のみ省きたいと、
正規表現をONにして、
検索文字欄に  ^//   を指定し、
置換文字欄を空欄にしたまま置換を行うと、
////が全て消えてしまい改行だけが残ってしまい期待通りの動作を
してくれません。本当は、
//
というふうになってほしいんですが。

置換文字欄を空欄にせずに、a などとすると
a//
となり期待通りの動作をするのですが、
行頭の//を省きたい時、置換文字を空欄にする、
指定方法は間違っているのでしょうか?

分かる方がおられましたら宜しくお願いします。

[ ]
RE:03338 行頭の文字を省く置換処理No.03340
EMiCC さん 99/05/21 10:49
 
>////
>という行があったとして、行頭の// のみ省きたいと、
>正規表現をONにして、
>検索文字欄に  ^//   を指定し、
>置換文字欄を空欄にしたまま置換を行うと、
>////が全て消えてしまい改行だけが残ってしまい期待通りの動作を
>してくれません。本当は、
>//
>というふうになってほしいんですが。
これは、「置換の前に確認」をONにして実行するとわかりますが、
始めに
////
の先頭2文字にヒットして削除され、
//
となるので、次にこの2文字にヒットしてこれも削除されてしまいます。
^////

//
に置換するように指定すれば、期待通りの動作になると思います。

[ ]
RE:03340 行頭の文字を省く置換処理No.03341
KITA さん 99/05/21 11:03
 
でも、SASさんの要望の
>>という行があったとして、行頭の// のみ省きたいと、
は、駄目ですね。

ありがちなパターンだけど、検索処理を考えると難しいなぁ。
正規表現で先頭指定の場合には置換後に次の行に移るしか
ないのでしょうかね?

[ ]
RE:03338 行頭の文字を省く置換処理No.03342
ひろ さん 99/05/21 11:29
 
 SASさん今日は、ひろです。
> 検索文字欄に  ^//   を指定し、
> 置換文字欄を空欄にしたまま置換を行うと、
> ////が全て消えてしまい改行だけが残ってしまい期待通りの動作を
 確かに人間の感覚からすると変な感じがしますね。
 ##perl とかはこういった動きをしなかったのかな?

 取り敢えず、検索文字列「^//\f.」置換文字列「\1」というように、タグ
付き正規表現による置換を使えば回避できるようです。

[ ]
RE:03342 行頭の文字を省く置換処理No.03343
EMiCC さん 99/05/21 11:53
 
ひろさんこんにちは、EMiCCです。

> 取り敢えず、検索文字列「^//\f.」置換文字列「\1」というように、タグ
>付き正規表現による置換を使えば回避できるようです。

そうですね、タグは使いなれてないんで、思いつきませんでした。

ということで、SASさん、私のことは忘れて、ひろさんの方法でやってみて下さい。




[ ]
RE:03342 行頭の文字を省く置換処理No.03344
KITA さん 99/05/21 13:20
 
ひろさん、まいどです!

> 取り敢えず、検索文字列「^//\f.」置換文字列「\1」というように、タグ
>付き正規表現による置換を使えば回避できるようです。
やってみました・・・が、
この置換の前に、正規表現で 「\//$」 を 「」(文字無し)に置換を行わないと
//だけで改行しているところが置換されませんでした。

2ステップ必要なのかな。

[ ]
RE:03344 行頭の文字を省く置換処理No.03347
ひろ さん 99/05/21 16:52
 
 KITA さん今日は、ひろです。
> //だけで改行しているところが置換されませんでした。
 考慮していませんでした(^^)。
 検索文字列を「^//\f.?」とすれば良いと思います。

[ ]
RE:03347 行頭の文字を省く置換処理No.03349
KITA さん 99/05/21 17:39
 
ひろさん、まいどです!

> 検索文字列を「^//\f.?」とすれば良いと思います。
お〜!なるほど。
こんな指定ができたのですね。勉強になりました。

[ ]
RE:03347 行頭の文字を省く置換処理No.03357
SAS さん 99/05/23 19:31
 
ひろさん、EMiCC さん、KITA さん、こんにちは。
実は行頭にある引用文字や、コメント文字を外すマクロを、
置換処理を使って実現したくて質問させていただいたのですが、
教えていただいた、
タグ付き正規表現を使う方法でうまくいきました。

僕のやりかただと、置換後の文字と、マッチしてしまう為に
うまくいかなかったのですね・・・
タグ付き正規表現の使い方が理解できていないので、
思いつきませんでした。助かります。
みなさん有難うございました。

[ ]
RE:03341 行頭の文字を省く置換処理No.03359
Arimac さん 99/05/23 23:20
 
>でも、SASさんの要望の
>>>という行があったとして、行頭の// のみ省きたいと、
>は、駄目ですね。
>
>ありがちなパターンだけど、検索処理を考えると難しいなぁ。
>正規表現で先頭指定の場合には置換後に次の行に移るしか
>ないのでしょうかね?

JRE32.DLLが正規表現をコンパイルした時に
行頭や行末を検索するメタキャラクタが含まれていた場合は
nWarningメンバのCwInlinePatternビットがonになる筈
なのですが、現在最新版のV1.17ではこのビットがonに
なっていません。

BRegIfではこのビットをonにするようにしたのですが、
次の行に移るのではなく1文字分だけ右に進むだけの
ようです。

どうもJRE32.DLLがビットをonにしていなかったため
秀丸エディタ側の対応が進んでいなかったのではないか?
と思います。

行頭や行末を検索するメタキャラクタが含まれていた場合は
次の行に進むのがやっぱり本来の動作なのでしょう。

[ ]
RE:03359 行頭の文字を省く置換処理No.03367
秀丸担当 さん 99/05/24 18:56
 
>JRE32.DLLが正規表現をコンパイルした時に
>行頭や行末を検索するメタキャラクタが含まれていた場合は
>nWarningメンバのCwInlinePatternビットがonになる筈
>なのですが、現在最新版のV1.17ではこのビットがonに
>なっていません。
>
>BRegIfではこのビットをonにするようにしたのですが、
>次の行に移るのではなく1文字分だけ右に進むだけの
>ようです。

たしかにCwInlinePatternのとき適用を一度のみにするために、
右に進むようになっています。
3161番でも書かれていましたが、BRegIf(?)とは何でしょうか。
JRE32.DLLの代りになるものなのでしょうか。

[ ]
RE:03340 行頭の文字を省く置換処理No.03370
MAKIO  さん 99/05/24 19:28
 
昨日,ダウンロードし現在ヘルプをみながら使用方法を確かめています。
新規作成あるいは作成した文章の後ろにワード文書,一太郎文書を取り込めないので
しょうか。


ついでに,もう一つgrep機能でワードや一太郎を検索できないのでしょうか。

仮にできるとした場合,秀丸に取り込まれた文書から,ダイレクトにワードや一太郎
の起動することはできないものでしょうか。

よろしく,お願いします。

[ ]
RE:03370 行頭の文字を省く置換処理No.03371
Kaisan さん 99/05/24 19:57
 
>昨日,ダウンロードし現在ヘルプをみながら使用方法を確かめています。
>新規作成あるいは作成した文章の後ろにワード文書,一太郎文書を取り込めないので
>しょうか。

ワードや一太郎からコピー&ペーストはできますが、直接開く
ことはできません。
#テキストエディタですから;;

>ついでに,もう一つgrep機能でワードや一太郎を検索できないのでしょうか。
>
>仮にできるとした場合,秀丸に取り込まれた文書から,ダイレクトにワードや一太郎
>の起動することはできないものでしょうか。

ワードや一太郎の検索機能を使うってのはだめですか?

一太郎9(8もできたと思う)の検索では、DOCでも検索できるはず
です。
タグファイルは作りませんが、最初に見つかった行にジャンプし
ます。

以上、Kaisanでした。

[ ]
RE:03367 行頭の文字を省く置換処理No.03372
Arimac さん 99/05/24 20:14
 
>たしかにCwInlinePatternのとき適用を一度のみにするために、
>右に進むようになっています。
>3161番でも書かれていましたが、BRegIf(?)とは何でしょうか。
>JRE32.DLLの代りになるものなのでしょうか。

「秀丸エディタと関連ソフト」に登録した
「BREGEXP.DLLを使えるようにするDLL」の事です(^^;

これはJRE32.DLLの代りになるもので、BREGEXP.DLLという
別のDLLで提供されるPerl5互換の正規表現が使えるようになります。
(詳しくはREADME.TXTを参照の事(^^;)

[ ]
RE:03370 行頭の文字を省く置換処理No.03375
ひろ さん 99/05/25 10:47
 
 MAKIO さん今日は、ひろです。
> 新規作成あるいは作成した文章の後ろにワード文書,一太郎文書を取り込めないので
 秀丸は text editor であり、Ms-Word や一太郎の file は binary data
ですので出来ません。

 ただ秀丸の文章中に file name を記述しておけば、double click で一太
郎などの file を関連付けられた application で開く事が出来ます。

[ ]
RE:03372 行頭の文字を省く置換処理No.03401
秀丸担当 さん 99/05/26 19:09
 
>「秀丸エディタと関連ソフト」に登録した
>「BREGEXP.DLLを使えるようにするDLL」の事です(^^;
>
>これはJRE32.DLLの代りになるもので、BREGEXP.DLLという
>別のDLLで提供されるPerl5互換の正規表現が使えるようになります。
>(詳しくはREADME.TXTを参照の事(^^;)

なるほど。そこにあったのですか。わかりました。
これはなかなか、すごいですね。

[ ]