7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

InDesignで使える正規表現を利用した検索・置き換え

Last updated at Posted at 2016-06-27

#半角スペースを取る
Wordのテキストデータやその他のデータで英単語の前後に半角スペースが入ってる場合があるが、そのような時に効率的に削除する方法を解説したい。

##正規表現での検索&削除
command+Fか、[編集]メニューから[検索と置き換え]を選び、タブを[正規表記]にする。

InDesign CCScreenSnapz001.png

正規表現での検索方法の詳しい情報は、WikiPediaの正規表現などを参考にしてほしい。

次に、[検索文字列:]の中に次の様に挿入する。

  • 半角文字の次に半角スペースがあり、その次に全角文字がある場合
(?<=[\x00-\x7F]) (?=[^\x00-\x7F])
  • 全角文字の次に半角スペースがあり、その次に半角文字がある場合
(?<=[^\x00-\x7F]) (?=[\x00-\x7F])

おまけとして全角文字と全角文字の間に半角スペースがある場合も列挙しておく

  • 全角文字と全角文字の間に半角スペースがある場合
(?<=[^\x00-\x7F]) (?=[^\x00-\x7F])

##結
今回は正規表現の肯定先読み、後読みという方法を使っての検索を行ったが、もしかするともう少しマシな方法もあるかも知れない。
とはいえ、これだけでも充分楽になったのではないだろうか?

音引きの検索方法

これもよくある話で、たとえばユーザーとユーザ、サーバーとサーバみたいに、原稿の中で統一されていない場合がある。
これも地道に検索していく方法もあるにはあるが、時間と労力の無駄なので、さくっと全検索・置き換え方法を使っていく

割とキモは^の使い方

ユーザとユーザーの検索で見ていくことにする。
たとえば、ユーザーをユーザに置き換える場合は、単純にユーザーを全検索をかけてユーザに置き換えてしまえば問題はない。
問題になるのは、ユーザを検索してユーザーに置き換える場合だ。この場合、単純にユーザを検索・置き換えにしてしまうと、ユーザーユーザという部分まで引っかかってしまい、そのまま置き換えをしてしまうとユーザーーとなってしまう。
なので、次の様に正規表現で検索する

ユーザ(?=[^ー])

ユーザまではわかると思うが、後ろにある(?=[^ー])は肯定後読みを使い、且つ、[^ー]を対象外としたことになる。この^を前に付けると、後ろの検索部分以外を検索しなさい!という命令になる。
同じようにサーバサーバーとする場合も、

サーバ(?=[^ー])

と正規表記検索を使って、置き換えてあげれば良い。

今回の肯定後読みと打ち消しだが、実はもっと色々な応用があるが、その辺は自分で色々考えてみてほしい。またInDesginに流し込む前にJeditなりの検索機能を使い、且つ、その設定を保存しておくと、一括で流し込みデータのができるので、これも試してほしいところであったりする。

挟まれた文字を検索する

著者に対して太字にしたいので、指定を括弧またはカギ括弧などで行ってほしいという事があり、後でその文字を一括変換に欠けたい場合などに用いる。

検索自体はかなり簡単で、たとえばカギ括弧の場合は次のように指定する。

\「.+?\」

つまりバックスラッシュの次は検索対称にはなるが、選択対象には入れないということになる。
後は、検索と置き換えの正規表記検索に入れて、置き換え形式に太字設定などを入れればいいだろう。その際、「や」などは検索と置き換えで個別に消してあげればいい。

これも色々応用の利く正規表現などで色々試してほしい。
上記の2つと組み合わせるとかなり絞った検索もできるようになるだろう。

同じ文字を繰り返しをマッチする

「これ、なんに使うんだ?」って思う人もいると思うが、実はわりとライティング打ち間違い上位に入るパターンである。
検索方法は次の通りである。

(.)\1+

上記の正規表現はメタ文字である**.**(.は改行以外全ての文字列を表現している)と、その後の「\1」で後方参照している。よくわからない人は、よく分からなくてもいいが、つまりそう言う事であるっていうことぐらいの柔らかい理解度で問題ない。

実際の検索方法

ひらがなだけをマッチさせたい場合は、次の様に書く。

([ぁ-ん])\1+

カタカナの場合は、次の様に書く。

([ァ-ヶ])\1+

漢字の場合は次の様に書く。

(亜-熙)\1+

また、ひらがな、カタカナ、漢字全てをマッチさせる場合は、次の様に書く。

([ぁ-んァ-ヶ亜-熙])\1+

結構この検索も使うが、難点は割と文章中にくり返し文字自体はよく使われるので、マッチしたからってそれが誤字ではないこともある。そういう場合は、自分で正誤の判断をしなければならない

複数の単語をマッチさせる

複数の単語を検索する場合は、以下のようにするのが簡単である。
使う場面としては、文章中に何個か検索したい単語があり、それを何回も検索するのが面倒だという場合である。
また、検索対象は以下のようにいくらでも増やせるので、対象単語が多く、それに対して一括処理などをしたい場合に重宝する。

(検索単語1)|(検索単語2)|(検索単語3)|.....

この検索方法はあくまで文章中に検索単語1ないし検索単語2があったらマッチするので、なかった場合はスルーされる。
自分の場合、次のように使用している。
使用方法としては次のようにカギ括弧や括弧などを検索対象にしたい場合など。

(「)|(」)
(()|())

または次のように複数の単語をまとめてボールドにしたい場合などだ。

\「.+?\」|(テンキーの[1-9])|(Tabキー)|(正面視点)|(真上視点)|(右側視点)

カギ括弧などの検索置換えを馬鹿正直にすると大変面倒などで、正規表現で一括変換するのがお勧めだ。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?