前に気になることがあったので覚え書。簡単に。 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字だけのとき注意、ということです。
関連記事一覧ツリー (▼ を押すとツリー全体を一括表示します)
返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
- 以下のフォームから自分の投稿記事を修正・削除することができます -