要するに,タグ付き正規表現のパターン
\x ^aaa\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)zzz$
…から,置換文字列
aaa\1\2\3\4zzz
…を生成してくれるマクロってことですよね。
少し面倒だなと感じることは確かにあります。
パターンによるのかもしれないですけど,見た目が複雑な書式から簡素な書式が生成されるというのは,今ひとつお得感が足りないという気がしました。
手で「\1\2\3\4」って入力するの簡単だから…と言ったらニベもないですが。
でも,自分もテキスト上でパターンを書いておいてヒストリに入れる(多くは削除文字列バッファに入れるだけですが)ということはよくあります。それの発展形ということですね。
自分だったらどう作る…と考えたとき,別のテキストに切り出しておいて,
\(と\)に囲まれた【最短の】文字列をヌル置換した数を記憶しておいて,
文字列のあったはずの場所に置換数分の\[num]を出力する……
……なんてこと考えてみました。
「^」や[$」はあれば消さなくちゃとか,[^\()] を含まない文字列を指定するのがやたら面倒とか,いろいろ障壁があるんだな〜〜(笑)
こういうのって,やり方は色々あって,考えるの楽しいですよね。
> &s
> #k #i ;duplicate line
ここのとこ,非ブロックの #y #k はサイレントで実行しないのが吉。
「繰り返し」実行ではないのでテキストスタックが損傷する可能性は低いとは思いますが,サイレントでは非ブロックの記憶/切除は実行しないクセをつけておく方がよいかと思います。老婆心ではありますが。
※カーニハン先生の「ソフトウェア作法」,えらく使い込まれた感じに傷んでいる本を図書館で借りてちょっとだけ読みました。
ふむふむ,で終わっちゃった。(笑)
関連記事一覧ツリー
(▼ を押すとツリー全体を一括表示します)
-
▼ - 5188.真剣マクロ(tag_rplp.def) - 文太 22/12/10-12:03
返信フォーム
(この記事に返信する場合は下記フォームから投稿して下さい)