バグ!?の報告と質問No.10487
楽をしたい さん 24/12/05 23:41
 
バグ!?を見つけてしまったみたいなのですが、どちらに投稿すればよいですか?
大したバグではないと思うので急ぐ必要もないと思うのですが。

質問ですが正規表現で検索・置換すると思った動作と違う結果になる事があるのです
が、一般的な正規表現に近づける方法はありますか?
例えば文字列の途中にある空白文字を検索・置換したい時に
.+[ \s].+

.+[ \t\f ].+
で変わるようです。改行が含まれるか否かの違いがある事は理解していますが、それ
とは関係ないようです。
呪文の様なコマンドがあるとか。
マクロを記録して保存すると一行目に何かしら必ずそれっぽいモノがあるけれど。

宜しくお願いします。

[ ]
RE:10487 バグ!?の報告と質問No.10488
秀丸担当 さん 24/12/06 11:09
 
バグと思わしきことがあるということで、この話の流れだったり簡単なことであれば
ここにコメントしてもらってもいいです。
普通であれば「2.秀丸エディタ&関連ソフトサポート会議室」でもいいですが、"t
aki@maruo.co.jp"にメールで送ってもらってもいいです。

正規表現については、\sは改行を含むので確かに違いがあります。
それとは関係ないこととは、ちょっとわからないですが、違う例がわかると助かりま
す。
\fは、いわゆるタグ付き正規表現の目的だとしたら、[]の中に書くとうまく動かない
と思います。
()を幾つか使って、\1、\2で表したほうが一般的な表現になります。
(ヘルプの「目次− コマンド− 検索系コマンド− 正規表現−一般的正規表現互換
のタグ付き正規表現 」のところ)

(.+)([ \s])(.+)
と書いて、置換の場合は置換文字列でそれぞれ部分ごとに\1、\2、\3で表されます。

検索の場合は、例えば
(.+)([ \s])(.+)(?\1)

(.+)([ \s])(.+)(?\2)

(.+)([ \s])(.+)(?\3)
と書いて、それぞれの部分で検索できたりします。

[ ]
RE:10488 バグ!?の報告と質問No.10489
楽をしたい さん 24/12/07 01:25
 
> 簡単なことであればここにコメントしてもらってもいいです。

では遠慮なく失礼します。

検索−grepの実行の『検索するフォルダ』の履歴が一つだけ残っちゃってます。
プライバシー−各種ヒストリーの消去でチェックを入れているのですが。
ファイルのヒストリーにいくつか常駐させているので消去(F)ボタンは押さずにいます。
原因はコレ?

> \fは、いわゆるタグ付き正規表現の目的だとしたら、の中に書くとうまく動かない
>と思います。

それじゃないかと思っています。確認していませんが。
\s は半角空白文字、タブ(\t)、フォームフィード(\f)、改行(\n\r)などの『見えな
い制御文字(コード)』だと理解しています。
見えないけど後々問題になりそう(無駄な空白行が大量に表示されそうな気がする)
なモノは除去しちゃおうと思って含めているのですが。

最終的には
(.+)([ \s]+)(.+)→\1\3
という具合にして除去しています。

[ ]
RE:10489 バグ!?の報告と質問No.10490
秀丸担当 さん 24/12/09 10:19
 
ご指摘ありがとうございます。

grepの検索するフォルダは、履歴が無い場合でも現在のフォルダが自動的に入力欄に
入るので、もしかしたらそのためかもしれないです。
入力欄の右の▽でドロップダウンした項目が履歴(ヒストリ)で、履歴の部分は消去
されているようでした。
[各種ヒストリーの消去]は、チェックしただけでは消えず、何らかの操作が必要で、
消去ボタンを押すか、[チェックした項目を消去!]を押すか、[終了時に自動消去]をO
Nにしておくか、などの操作が必要です。

\fについては、秀丸エディタの正規表現ではフォームフィードとしては働かず、タグ
付き正規表現の区切りとしてみなされてしまいます。
フォームフィードは、制御コード12で、[その他]→[制御コード入力...]より入力可
能です。
秀丸エディタの画面上ではCLとして表示されます。
もしフォームフィードを検索する場合は、16進数で表した正規表現で、\x0Cと書くこ
とで検索が可能です。

[ ]
RE:10490 バグ!?の報告と質問No.10495
楽をしたい さん 24/12/12 00:30
 
> 履歴が無い場合でも現在のフォルダが自動的に入力欄に入る
成程。現在登録されているフォルダを検索した記憶が無いので!?と思っていた謎が
解けました。
承知しました。

> タグ付き正規表現の区切りとしてみなされてしまいます
やはり違うモノを操作しようとしていたのですね。試してみます。
ありがとうございました。

[ ]