« この煮物に痺れた | トップページ | またまた8時間連続睡眠に挑戦 »

mi正規表現の不思議

Icon

 学生にMacでの正規表現を使った検索方法や、マルチファイル検索/置換を教えようとして少々躓きました。
 
 この授業、これまではJeditXというのを使っていて、これはダウンロードして半月くらいはお試しでフル機能が使えましたし、何より私の愛用エディターであるので慣れているというのもあります。
 
 が、そろそろ学生の中は32bitアプリが動かないCatalinaにしているのもいて、そうなるとJeditも64bit化しているΩが必要となります。 ところがこれが以前のような期間限定フル機能ではなく、永久フリーになったのはいいけど、検索も含めた高度な機能を使うなら有償、とポリシー変更されていました。(私はすぐに購入・登録したから気づかなかった)
 ということで授業ではΩを諦め、もともと学生がwebコーディング用にダウンロードしているmiというエディターに急遽変更。
 
 普段あんまり使い慣れていないので、と前置きしながら授業を進めていると、おかしなことに気がつきました。
 それはバックスラッシュの扱い。
 
 正規表現で()で括った文字列を探し、それを置換時に生かす際には、\数字 を用います。(グループ化)
  ※blog上で問題が出るかもしれない記号は全角化しています。
 ところがmiでは\が単なるエスケープ文字として扱われ、仮に数字を1とすると、ズラーッと1が流し込まれました。
 あれ?自分の勘違いかな?と検索ダイアログボックスにある正規表現のヘルプを見ると、ちゃんと\数字と明記されている。
 確かに環境設定などで¥と\をどう扱うか、という項目もあり、ネット検索でもそれを指示しているのがあるんだけど、どうやってもダメ。
 
 すると生徒の一人が、$でダメなんですか?と提案。
 いや、$は行末というのが割り付けられていて、と言いながらも試してみると、あら$数字で置換できた。
 
 いやいやいや、それおかしいだろう、と思いつつmiに組み込まれているヘルプ見たら、「置換時に、置換文字列内の$0を一致した文字列全体、$1〜を各グループに一致した文字列に置き換えてから、置換処理を行います。」とさりげなく表記してありました。
 ん?なんかおかしくない?
 念の為、Jedit Ωで試すとやはり\で問題ない。
 
 教える立場にするとなんともスッキリしない結果でした。
 
 そもそも\に¥を割り付けたShift JIS関係者、おまえのせいじゃ〜っ!

|

« この煮物に痺れた | トップページ | またまた8時間連続睡眠に挑戦 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« この煮物に痺れた | トップページ | またまた8時間連続睡眠に挑戦 »