一括表示

− 野ざらし言 −

[5541] 正規表現を使った置換

としき 2024/02/29(Thu) 01:22
http://toshiki.la.coocan.jp/
以前にも似たような投稿をしたような記憶があります。
過去ログを検索すれば、もしかしたらそのものずばりというか、全くおんなじ
案件があったりして。

テキストファイルの行頭の半角空白をまとめて除去したい、というニーズが
発生しました。
そこで、Vzの検索文字列窓に放り込んだのが
【^  *】
という文字列。そして、置換文字列窓にはヌルというかリターン空打ち。
置換範囲に「テキスト全体」を選んで、これで全部除去されるかと思いきや、
削除されたのはファイルの先頭行の行頭空白だけ。
あれ?
気を取り直して、空白の削除された先頭行はそのままに、行頭空白のある
2行目はスルーして、同じく行頭空白のある3行目の行頭にカーソルを置き、
直前の置換の再実行に割り当ててある「^QO」を押したけど、何も起こらず。
念のため、[F7]を押して置換を起動し、上矢印を2回押して検索文字列を呼び
出してリターン、さらにそのまま置換文字列はリターン出から文字列、置換
範囲をテキスト全体でリターン。結果「0 個の文字列を置換しました」。

私は一体何を間違っているのでしょうか。
vxwは常駐しています。

[5542] Re: 正規表現を使った置換

めざら 2024/02/29(Thu) 08:08
[5541]へのコメント http://mezala.la.coocan.jp/
わたしは常時 RX-(正規表現オフ) のため少し環境が異なるかもしれませんが,手元で【\x ^ *】をヌル置換(…と仮称)すると,すべての行にマッチしました。
つまり,すべての行が消えました。\(^o^)/
【\x ^\s*】でも結果は同じでした。

【\x ^ +】をヌル置換したら,所期の置換結果を得ました。

メタ文字'+'が使えるようになる以前から正規表現に慣れ親しんできた方は,'*'を反復に使い続けていらっしゃるのかもしれませんが,vwx + VZ で初めて正規表現を使った自分などは '*'を使うことはかなり稀ですので,ヌル置換で愕然とするという機会はあまりなかったように思います。

まぁ,よくある VWX のバグってやつじゃないでしょうか。
(基本セット世代には絶対に許容できない問題かもしれませんね。)

[5543] Re^2: 正規表現を使った置換

としき 2024/02/29(Thu) 14:51
[5542]へのコメント http://toshiki.la.coocan.jp/
> 手元で【\x ^ *】をヌル置換
> つまり,すべての行が消えました。\(^o^)/

実は、これは最初に試して、同じ結果でした。
そこで気がつきました。【*】はゼロ回以上の繰り返しだ、と。
そこで1回以上の繰り返しを意味する【^  *】を指定したら、#5541の結果となったのでした。

> 【\x ^ +】をヌル置換したら,所期の置換結果を得ました。

うちでは、これを指定しても、全ての行にマッチして、そして何もなくなりました。

> まぁ,よくある VWX のバグってやつじゃないでしょうか。

うん、まぁ、うちだけの問題とか設定で回避できるとかではないことがわかり
ましたので、素直にあきらめます。
今回の問題はキーボードマクロで解決しました。「#t#>#d」って形。
たかだか百数十行だったし。
 

[5544] Re^3: 正規表現を使った置換

めざら 2024/02/29(Thu) 20:39
[5543]へのコメント http://mezala.la.coocan.jp/
なんかおっしゃっていることが解らないなぁ……と思っていたら,通常モードだったから空白2個が1個になってしまっていたのですね。

で,わたしの手元では空白2個と'*'(【\s\s*】と同義)では所期の動作が得られています。としきさんの手元では先頭行の行頭空白のみ削除されたということですね? 何かオプションが異なるのでしょうか……(?_?)
うちでは vwx -z2 -x1 -v3 -l8192 で常駐,ZH- RX- です。
あと fazzy.com 常駐です。


ちょっとその動作(最初に出現したパターン1個のみマッチ)は解らないなぁ……

(preモードでの長い行は後ほど桁折させていただきます)

[5545] Re^4: 正規表現を使った置換

としき 2024/03/01(Fri) 01:10
[5544]へのコメント http://toshiki.la.coocan.jp/
いや、いろいろと申し訳ない。デフォルトがpreの世界で生きているもので。
というか「WYPIWYG」(What you put is What you get)が好きなんですよ。
だから、よくある、日本語変換の辞書の短縮登録とかもなじめないし。
予測変換にもあんまりなじめないなぁ。
とりあえず、長い行は桁折しました。

それはさておき。
うちでは vwx -z2 -l8192 -x3 -v3 となっていました。
む、xオプションが異なる。これかな。
fazzy.comは使っていません。
ZH と RX は、通常はいずれも+ですが、今回、勘が働いたというか、#5541の最初の実験をする前に検索文字列窓で \[F1] を押して、これらはキャンセルしていました。つまり、OPT:X のみ、という状況。

ということで、もう一度 vwx の常駐オプションを変えて実験。
うむ、状況は同じ。
なんか、あたかも、全てが1行になっているかのような。
おや、なんかピンと来たぞ。

ゴソゴソ

あ、bz で開いたらわかった。
このファイル、改行コードが全て 0Ah のみになってる。
なんてこった。だからだ。
とりあえず、ファイルを更新した記憶をたどると。
more とか type ではファイルは変更されないよなぁ。
あ、一度 cat をかましている。
どの cat だ?
これだ、32bit対応cat、タイムスタンプは 00/09/13 17:20。
ドキュメントを見ても、実行ファイルの中をのぞいても、コピーライトなんかは書いていない。
確認したところ、このcatを通すと、改行コードが 0Ah のみになる。
なんとなく、unix用のcatをWindows上でそのままコンパイルしただけ、という気がする。
まさか、こんな落とし穴があったなんて。
ざっと3ダースばかりのツールを、ASCII toolsからこの32bit対応ツールに置き換えているのですが、いろいろと危険かもしれない。特に、デフォルトがどうなっている、なんていうのも、今回の pre の問題と似たようなもので、全く明記していないものだから怖い。


とりあえず、解決したようです。
お騒がせしました。

[5546] Re^5: 正規表現を使った置換

めざら 2024/03/01(Fri) 07:47
[5545]へのコメント http://mezala.la.coocan.jp/
いや,いろいろと VWX のバグを疑ってしまいましたが,仕様でしたね。
ごめんなさい>wingさん (「よくある」なんて言っちゃった(^^;)
ともかく解決してよかったです。まぁ,このケースは気付かないですね。
改行コードの色が CA の設定で変えられると便利ですが……できない……
CA(http://mezala.la.coocan.jp/vz/notes/vars.html#CA


余談ですが,辞書の短縮登録なんかやりまくりで,予測変換依存症です。
別コンテンツの話ですが,ラジオ欄では歌舞伎役者なんかだと下の名前しか記載してなくて,素人にはフルネームの名跡なんて全部覚えられないです。なので,読みで下の名前を入力すればフルネームが出るように短縮登録しています。あと,Google IME は人名などの固有名詞になまら強いので手放せないです。一二文字入力しただけで予測変換候補から選べるので超便利。Google IME がなかったらあっちのコンテンツはラジオ百年紀念に間に合わせることはできないでしょう。

まぁ,短縮登録は DOS の WX 時代からやってましたけどね。わたしは短縮登録の前置文字として@や:などの記号を使っています。「@な」で「(NHK名古屋)」とかですね。ATOK は(今はどうか知りませんが)記号前置で単語登録できなかったんです。それもあって VZ と相性のよい WX に乗り換えたわけですが,Google IME でもキー設定は WX 模擬設定でした。最近は WX が設定サンプルから外れてしまって寂しいです。エー・アイ・ソフトも親会社のエプンソに吸収合併されてしまっていたのですね。これも時代の流れでしょうか。関係ないけど,ジャストシステムには今後も頑張ってほしいと思います。横道の脇道に逸れました。

↑ このページの先頭