記事閲覧

− 野ざらし言 −

5264 + と * (@VWX)

文太 2023/01/03(Tue) 23:33 [5263]へのコメント
 前に気になることがあったので覚え書。簡単に。
 VWX の正規表現は立派です。ERE (Extended Regular Expression)で awk 並です。
 多くの日本語対応DOSスクリプティングツールの時期には、ふつう、EREを搭載
させていると思いますが。grepな連中とか。
 ただ、sedは過去との互換性がありますから、「+」がありません。ですから、
しょうがなく「*」で代用します。2個重ねて代用します。


あ+ は ああああああ
にヒット

あ* は すべての文字のヒットになるので(0個以上だから)、代用するには

ああ* とします。これで、 ああああああ にヒット。

 ふつう VWX で置換する場合、「あ+」になります。「*」を使うのは例外中の例外です。
 sedには、「+」がないから、「*」を使うしかないのです。

 付けたし(例外)はありますが、VWXではふつう「+」と覚えておいて良いと思います。


 例外?

Chapter 1
Chapter1
 どっちでも削除したい。s/Chapter *1//

特殊な事例(英文etext処理)だと思いますが、僕は、よくこんなのを使います。
s/ *Chapter *1 *//		;(1)

もっと文脈を強めると
s/^ *Chapter *[0-9][0-9]* *//	;(1)より、どう強力か?
となります。

 つまり、1字だけを対象にするから「あ*」が怖くなるんですね。他にアンカーが
あるのが普通なので、「+」がないsed でも「*」を怖がらなくていいんです。

 というわけで、VWXでは、ふつう、「a*」ではなく「a+」となります。
1字だけのとき注意、ということです。

関連記事一覧ツリー (▼ を押すとツリー全体を一括表示します)

- 5188.真剣マクロ(tag_rplp.def) - 文太 22/12/10-12:03

返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

おなまえ :
Eメール :
タイトル :
メッセージ: 通常モード(推奨)  整形モード(非推奨)  preモード(空白再現)
※ プログラムコード等を含まない場合は,できるだけ通常モードをご利用ください。

参照先 :
暗証キー: (英数字で8文字以内) プレビューなし


- 以下のフォームから自分の投稿記事を修正・削除することができます -

処理 記事No. 暗証キー