Illustratorで正規表現で検索置換(今さら)

イラスター上で正規表現で検索置換。
既に先人達が作っておられます。
kamisetoさんたけうちとおるさんPICTRIXさん
(PICTRIXさんのRegXについては現在ページごと非公開のようす。残念。)
あとGitHubにはtenさんのも。
それぞれに特色がありますが。

自分としては正規表現の書き損じがとても心配なので、
置換前に結果をプレビューしたい。ぜひしたい。
先達の分でそれができるのはPICTRIX師匠のRegXだけなんですが、
ちとUIのカサがビッグで、触るトコが多すぎて一向に操作を覚えられない…
CS6未対応なのももったいないところで。

それはおいといても、果たして自作できるのか、と。
手間のない範囲でちょっと試してみたところ、
特にエスケープ文字に気を配らなくても手軽にpromptの引数をRegExpオブジェクトに渡せる事がわかったので
面倒なことになる直前までだけど作ってみました。
実際ここまででも結構ホネ折れましたが。。
そして、イラスターは全部BridgeTalk経由せにゃならん。。
POT2移植を諦めたのもこのせい。ぐぬぬ。

えー、シンプルでありながら置換結果をプレビューできる物、ということで
外観こんなんなりました。
20150105a

 

ダウンロードはここから。


ai_simpleRegExp.jsx
MacOSX10.9.5 IllustratorCS3、CS6で動作確認済み
2015.01.05.13:15 エスケープ(\)が使えない、重篤なミスを直しました。
スクリプトをエディタで開いて先頭に「ver_a」と書かれている場合は
お手数ですが再度ダウンロードしてくださいorz ver_b以降をお使いください。

2015.01.06.14:15 改行、タブなど
正規表現のエスケープ文字に絡む記号がターゲットに含まれる場合に帰ってこなくなるバグを修正。ダウンロード先は同じです。ver_c となります。すいませんごめん。
これにより、プレビュー窓がほとんど使い物にならなくなりましたw いずれ直します

2015.01.13.12:00 ver_e
複数段落を有するテキストが絡むと動かなかった件を含め、
こっぴどく直しました。すいませんすいません。
また、注意事項を1つ追加しました。再度確認お願いします

2015.11.16 ver_f
置換語内のメタ文字を正しく解釈するよう修正。
“\t” をタブ送り文字、”\r” を改行として扱います。
これにより後方参照も可能となりました。やったー。

2015.12.04 ver_g
上記に加え、強制改行(Unicode:0003)文字を
“\n”(Unicode:000A)で代用可能に。
かなり汚い書き方したのでバグ出るかも。

2017.04.18 ver_h
1年半前にアップしたver_gの置換部分にゴミを置き忘れていて動かなかったのを修正…
誰か教えてくれてもorz


 

検索対象となるのはドキュメント上の選択可能なテキストオブジェクト。
または、あらかじめ選択されているテキストオブジェクトがあればそれらだけが対象となります。

あそびかた

最初は「検索語」ボタン。ダイアログが出るので検索語を入力します。
ExtendScriptの仕様にのっとった物なので戻り読み(?<=hoge)と(?<!hoge)は使えません。

フラグオプションについてはInDesignやJeditなどでしか正規表現を扱わない人には目新しいかもですが
チェックを入れることで以下のご利益があります。
i……大文字、小文字の区別なし
m……複数行に対応
g……検索結果が1つのテキスト内に複数見つかる場合、すべて対象とします(オフでは先頭の1つのみ)

そしたら「まず検索」ボタン。←二番目なのに「まず」付けちゃった。。
検索結果は選択ハニーとなって示されます。
20150105b

1つでも見つかった場合、「まず検索」ボタンは操作不能となり、他のボタンが操作可能となります。
「中断」ボタンを押すか、全て置換し終わるか、まではボタンは元に戻りません。
ただ検索&選択したいだけなら、ここで終了。

置換するなら「置換語」ボタンで、置換語の入力。
グループ参照はInDesignのGREP検索置換同様$1〜$9を使います。
20150105c

「検索結果」と「置換予定」の欄に文字が出ます。これが直近のターゲットです。
ここから1つずつ順に置換するには「置換&次へ」ボタン。
置換が実行され、次の対象が「検索結果」と「置換予定」に反映されます。
まずってたら「スキップ」ボタンで、置換せず次へ。
「残りぜんぶドン」ボタンは考えずに感じてください。

で、以下、とても大事な注意点。
読まずに使って困った事になってエーンって泣いても知りません。

 

(日)テキスト属性

置換後は、テキストオブジェクト全体の先頭文字の属性に均されてしまいます。
不向きなオブジェクトにはまったく使えません。
先達のスクリプトにはここもしっかりクリアされている物もあります。
要は字数をカウントした上で1文字ずつ置換していかないといけない箇所なのです。
めんどくさい上に精査している心の余裕がないのでココの強化はまたの機会に。
20150105d

(月)威張るパレット

ScriptUIで作ったパレットが出ずっぱりなのですが、
これはプラグイン仕立てで作ったパネルと違い、ドキュメントウィンドウと主導権の取り合いをします。
パレットをいじった直後は、いかなるキーボード操作もドキュメントに届きません。
バージョンによっては問題ないかも知れません。CS4がとくに鬼門なので気をつけて。
作業時は一度ドキュメントウィンドウをカチしてアクティブにしてあげてください。
20150105e

(火)戻り読み非対応

上でも書きましたが、ExtendScriptの正規表現は戻り読み・否定戻り読みに対応しておりません。
なかったら作ればいいじゃない、となればかっこいいんですけども。
ウチはかっこわるいので作りません。
RegXでは可能です。どれだけ作り込んだんだって話ですよもう。
以上、反響如何、モチベ如何では強化するかも知れません。ウチはお金がありません。

(水)検索〜置換中は選択ハニーを変更しないでください(2015.01.13追記分)

検索結果を選択ハニーで表すのは前述の通りですが、
いざ置換の際にはその選択ハニーを頼りにテキストをつかまえます。
選択状況を変更すると誤動作します。

ですー。

Facebooktwittergoogle_plus

12 thoughts on “Illustratorで正規表現で検索置換(今さら)

  1. 神アラワル。
    以前、カレンダーのスクリプトでお世話になった者です。
    案件の関係から遂に、RegXを購入しようと決意した矢先非公開になっており、
    大変困っていたところにこのスクリプト…。大変助かりました。
    プレビューで確認できるところも最高です。
    また、いろいろとご相談させていただく事もあるかと思います。よろしくお願いします。

    • > nakahashiさま
      そのせつはこちらこそお世話になりました。
      余談ですが今月は小遣いが出ませんでした。
      先月の残りの2千円で月末までもつのでしょうか。。
      ご相談お待ちしております^

  2. はじめまして!
    いつもスクリプト使わせて頂いているのと、
    言葉使いのセンスに多大な影響を受けている物です。

    このスクリプト、「検索した正規表現を、正規表現で置き換える」
    ということはできませんでしょうか?

    何がしたいかというと…
    例えば、改行増やしたいときに
    「\r」を、「\r\r\r」にしたり、
    強制改行を復帰改行にしたりができればなと思ったのですが、可能でしょうか?
    よろしくお願い致します。

    • コメント承認大幅に遅れてしまいすみません。
      作るだけ作って満足して放置してました。。実用もしていませんw
      下半分のフィールドが機能をなしていませんねこれ。。
      お約束はできませんが、いずれこのあたりは直します。いつになるやらですが…
      ご要望の点についてもその際に機能追加という形で。
      あるいは、改変してくださって構わないので周囲の好事家にご依頼ください。

  3. すばらしい!ありがとうございました–!
    ちなみに、illustratorで通常の改行「\r」をShift+entetの復帰改行にしたいんですが、
    その場合どういう記号を打てばよいかご存知でしょうか…?

    • ちょっと長くなるんですが”\u0003″と入力してみてください。
      InDesignの強制改行なんかは”\n”なんですが、こちらはユニコード000a となります。
      入力はどちらもShift + Return ですが別物なんですよね。
      逆にいえばIllustrator上では使われない文字なので、”\n”と入れたら”\u0003″のことだな、と解釈するよう改良してもいいと思うんですが、
      ちょっと睡眠時間が安定するまでお待ちくださいorz 最近忙しくてまじ2時間/日ですw

  4. スバラシー!!
    何年もの間もんもんとしていた部分がスッキリしました!!

    キモチイイ。

    ありがとうございました!
    改良はお手隙の時で結構です!

    まずは睡眠時間の確保を最優先でw

    レタスには安眠効果があるというのはガセネタらしいですヨ

    • やっつけですが、ひとまず動いたようなので上書きしておきました。
      よろしければお試しくださいませ。

      のちほど、お振込先のご案内を差し上げます(Φ虫Φ)

  5. またまたスバラシー!!
    ありがとうございました!

    実は、可能であればもう1個おねがいしたいのですが、
    フラグオプションi,m,gを、
    チェックされている状態をデフォルトにすることはできますでしょうか?
    度々スイマセン。。。

    それではお振込先お待ちしております(´∀`)

    • お振込みの意志がおありでしたらメールをくださいませ。
      さすがにここに晒すわけにはいきませんので。

      度量を試されているのか知りませんが、
      あなたのようなクレクレの前例をこしらえてしまうとのちのちの世の中のためになりませんので。
      また、小出し小出しで修正依頼をよこされる事がどれほどストレスであるか、
      同業であればおわかりいただけますよね?

      やりません。
      タダではやりませーん。
      誰かヒマでヒマでムダに親切な人に頼んでください。
      ソースは公開しています。勝手にてきとうにいじれば? おっしゃる修正、ひじょうに簡単ですから。

      • 例えフリーとしてある物の改変であっても、
        有償にて依頼をくださる方は皆さん丁寧なメールを最初にくださいます。
        最初のレスにあるように、これは余儀で書いたものです。
        決して自分の業務のタシにはなっていません。
        有用だと思われるのであれば、コストへの対価はお支払いいただいて当然かと思います。
        世の中タダのソフトやスクリプトが溢れていて、すごいですねえ。
        でもウチはすごくないただの忙しい貧乏人ですので。

        大人ぶってスルーすればいいんでしょうけど、すみませんねえ。

コメントを残す

メールアドレスが公開されることはありません。


*