2010年10月4日月曜日

EmEditor Free Version 6.00.4 正規表現での置換で困ったこと

EmEditor Free を使って、下記のソースのようなソースを編集しているときに 33 ~ 37行のインデントを減らそうと矩形選択しようとしたら [編集(E)] メニューにない。どうやら Free 版の機能制限のひとつらしい。

  1. function on_load() {
  2. var el = document.createElement('img');
  3. var json_attrs = {
  4. 'id':'some_site'
  5. , 'alt':'some_site'
  6. , 'width':'600'
  7. , 'height':'200'
  8. , 'src':'/some_site.png' };
  9.  
  10. for each (var name in json_attrs) {
  11. var attr = document.createAttribute(name);
  12. attr.value = json_attrs[name];
  13. el.attributes.setNamedItem(attr);
  14. }

しかたがないので、正規表現で置換してみたところ。。。

  • 33 ~ 37行を選択
  • [検索(S)] メニューから [置換(R)] を選択
  • 下記の置換オプションで [置換(R)] ボタンをクリックして実行

※ テキストボックスへ入力した空白( )をアンダーバー(_)として表示

置換
検索する文字列(I):
^__
置換後の文字列(P):
 
大文字と小文字を区別する(C)
正規表現を使用する(X)
エスケープ シーケンスを使用する(E)
単語のみ検索する(W)
選択した範囲のみ(S)
終了したら閉じる(L)

左のスペースがすべて削除されてしまった。。。

  1. function on_load() {
  2. var el = document.createElement('img');
  3. var json_attrs = {
  4. 'id':'some_site'
  5. , 'alt':'some_site'
  6. , 'width':'600'
  7. , 'height':'200'
  8. , 'src':'/some_site.png' };
  9.  
  10. for each (var name in json_attrs) {
  11. var attr = document.createAttribute(name);
  12. attr.value = json_attrs[name];
  13. el.attributes.setNamedItem(attr);
  14. }

問題回避方法は

※ テキストボックスへ入力した空白( )をアンダーバー(_)として表示

置換
検索する文字列(I):
^__(_*)
置換後の文字列(P):
\1
大文字と小文字を区別する(C)
正規表現を使用する(X)
エスケープ シーケンスを使用する(E)
単語のみ検索する(W)
選択した範囲のみ(S)
終了したら閉じる(L)