2008-05-27 市川せうぞー
InDesign CS3の正規表現一覧をまとめてみました。オンラインヘルプよりもちゃんとしてます。間違え、漏れなど見つけた方はご一報ください。
| 正規表現 | 意味 | InDesign拡張 | 検索のみ | InDesignワイルドカード | 用例・備考 |
|---|---|---|---|---|---|
| 文字 | リテラル | 文字そのものを表す。ABC→ABC | |||
| . | 任意の1文字 | ● |
^? | 改行文字を含まない | |
| \t | タブ文字 | ^t | |||
| \r | 改行文字 | ^p | |||
| \n | 強制改行 | ● |
^n | shift+return | |
| \d | 数字 | ● |
^9 | [0-9]と同じ | |
| \D | 数字以外の文字 | ● |
[^0-9]と同じ(改行文字を含む) | ||
| \s | ホワイトスペース | ● |
^w | [ \t\r\n]と同じ。全角スペースを含めたいときは「全角半角を区別」がONにするか、素直に[ \s]とする。EMスペースなどにはマッチしない。 | |
| \S | スペース以外の文字 | ● |
[^ \t\r\n]と同じ。 | ||
| \w | 任意の単語文字 | ● |
[0-9A-Za-z_]と同じ | ||
| \W | 単語文字以外の文字 | ● |
[^0-9A-Za-z_]と同じ | ||
| \u | 任意の大文字 | ● |
[A-Z]と同じ | ||
| \U | 大文字以外の文字 | ● |
[^A-Z]と同じ | ||
| \l | 任意の小文字 | ● |
[a-z]と同じ | ||
| \L | 小文字以外の文字 | ● |
[^a-z]と同じ | ||
| [\l\u] | 欧文アルファベット文字 | ● |
^$ | [A-Za-z]と同じ | |
| \K | 漢字 | ● |
^K | 基本的にCJK統合漢字領域を指すようだ。CJK統合漢字拡張[AB]にも含まれるものがあるが、完全ではない。(精神衛生を考慮して)コードポイントを指定して書きたいなら[一-龠]とする(「一:U+4E00」「龠:U+9FA0」)。間違ってもSJISの呪い([亜-煕])を使わないように。 | |
| \\ | (文字)バックスラッシュ | \ | 一般的に正規表現では、文字前に置いた\は次の文字を表します(\を無視します)。「\あ」は「あ」を表します。 | ||
| \^ | (文字)カレット | ^^ | |||
| ¥x{0024} | InDesign CS3(5.0.2)では文字「$」が「\$」でマッチしない(バグ)。文字「$」を表すためにUnicode表現が必要。 | ||||
| \. | (文字)ピリオド | ||||
| \( | (文字)始め括弧 | ( | |||
| \) | (文字)終わり括弧 | ) | |||
| \{ | (文字)始め中括弧 | { | |||
| \} | (文字)終わり中括弧 | } | |||
| \[ | (文字)始めかぎ括弧 | [ | |||
| \] | (文字)終わりかぎ括弧 | ] | |||
| \~ | (文字)チルド | ~ | |||
| \x{hex-num} | コードポイントhex-num(16進数)の文字 | ● |
<hex-num> | 文字「あ」は「\x{3042}」。ASCII文字のみ\xnumでも表せる(文字「A」は「\x41」) | |
| \oct-num | コードポイントoct-num(8進数)の文字 | ● |
数字の「1」は「¥031」。アルファベットの「A」はなぜか「¥0101」(InDesign CS3(5.0.2)バグ)。 | ||
| [[:alnum:]] | 任意の英数字 | ● |
[[:alpha:]] + [[:digit:]]と同じ。以下POSIXブラケット表現、ロケールに依存。[[:^alnum:]]で否定集合を表す。 | ||
| [[:alpha:]] | 任意のアルファベット文字 | ● |
[[:lower:]] + [[:upper:]]と同じ。[A-Za-z]のアルファベットおよびその字形集合を含む。 | ||
| [[:blank:]] | 任意の空白文字 | ● |
半角スペースとタブにのみマッチ。通常は[ \t]と同じ。EMスペースなどにはマッチしない。 | ||
| [[:cntrl:]] | 任意の制御文字 | ● |
[\x00-\x1F\x7F]と同じ。\x7FはDEL。InDesignではいくつかの制御文字が、「改ページ」や「自動ページ番号」「セクションマーカー」などに割り振られている。 | ||
| [[:digit:]] | 任意の数字 | ● |
[0-9]の数字およびその字形集合と同じ。 | ||
| [[:graph:]] | 印字可能かつ表示可能な任意のASCII文字 | ● |
[!-~]とその字形集合と同じ。(スペースは印字可能だが表示可能ではない) | ||
| [[:lower:]] | 任意のアルファベット小文字 | ● |
[a-z]とその字形集合と同じ。 | ||
| [[:print:]] | 任意の印刷可能文字(ASCII内) | ● |
[ -~]とその字形集合と同じ。(スペースを含むがタブは含まない) | ||
| [[:punct:]] | 任意の記号文字(ASCII内) | ● |
パンクチュエーション文字。[!-/:-@\[-`{-~]とその字形集合と同じ。 | ||
| [[:space:]] | 空白文字、タブ、改行、水平タブ、給紙、キャリッジリターン、空白 | ● |
「全角半角の区別」をオフにしなければ、全角スペースは含まない。 | ||
| [[:unicode:]] | コードが255より大きい任意の文字 | ● |
広幅特徴を持つクラスのみに適用(※これについては、ちょっとよくわからない) | ||
| [[:upper:]] | 任意のアルファベット大文字 | ● |
[A-Z]とその字形集合と同じ。 | ||
| [[:word:]] | ● |
[[:alnum:]]とアンダーバー | |||
| [[:xdigit:]] | 0~9、a~fおよびA~Fの任意の16進を構成できる数字 | ● |
[0-9A-Fa-f]とその字形集合と同じ。 | ||
| [[=a=]] | 特定の文字の字形セット | ● |
a、à、á、â、ã、ä、å、A、À、Á、Â、Ã、Ä、Åなどにマッチする。コードポイントが255以上の文字では使えない。[[=あ=]]などとしても丸付きの「あ」はマッチしない。 | ||
| ~" | 半角二重引用符 | ● |
^" | ||
| ~{ | 左二重引用符 | ● |
^{ | ||
| ~} | 右二重引用符 | ● |
^} | ||
| ~' | 半角一重引用符 | ● |
^' | ||
| ~[ | 左引用符 | ● |
^[ | ||
| ~] | 右引用符 | ● |
^] | ||
| ~2 | 著作権記号 | ● |
^2 | ||
| ~e | 省略記号 | ● |
^e | ||
| ~7 | 段落記号 | ● |
^7 | ||
| ~r | 登録商標記号 | ● |
^r | ||
| ~6 | セクション記号 | ● |
^6 | ||
| ~d | 商標記号 | ● |
^d | ||
| ~# | 任意のページ番号 | ● |
^# | ||
| ~N | 現在のページ番号 | ● |
^N | ||
| ~X | 次ページ番号 | ● |
^X | ||
| ~V | 前ページ番号 | ● |
^V | ||
| ~v | 任意の変数 | ● |
● |
^v | |
| ~x | セクションマーカー | ● |
^x | ||
| ~a | アンカー付きオブジェクトマーカー | ● |
● |
^a | |
| ~F | 脚注参照マーカー | ● |
● |
^F | |
| ~I | 索引マーカー | ● |
● |
^I | |
| ~8 | ビュレット | ● |
^8 | ||
| ~5 | 中点 | ● |
^5 | ||
| ~_ | EMダッシュ | ● |
^_ | ||
| ~= | ENダッシュ | ● |
^= | ||
| ~- | 任意ハイフン | ● |
^- | ||
| ~~ | 分散禁止ハイフン | ● |
^~ | ||
| ~( | 全角スペース | ● |
^( | ||
| ~m | EMスペース | ● |
^m | ||
| ~> | ENスペース | ● |
^> | ||
| ~3 | 1/3スペース | ● |
^3 | ||
| ~4 | 1/4スペース | ● |
^4 | ||
| ~% | 1/6スペース | ● |
^% | ||
| ~f | フラッシュスペース | ● |
^f | ||
| ~| | 極細スペース | ● |
^| | ||
| ~s | 分散禁止スペース | ● |
^s | ||
| ~S | 分離禁止スペース(固定幅) | ● |
^S | ||
| ~< | 細いスペース | ● |
^< | ||
| ~/ | 数字の間隔 | ● |
^/ | ||
| ~. | 句読点等の間隔 | ● |
^. | ||
| ~c | クリップボードの内容、書式設定あり | ● |
^c | 置換フィールドのみ有効 | |
| ~C | クリップボードの内容、書式設定なし | ● |
^C | 置換フィールドのみ有効 | |
| ~b | 標準強制改行 | ● |
^b | ||
| ~M | 改段 | ● |
^M | ||
| ~R | 改フレーム | ● |
^R | ||
| ~P | 改ページ | ● |
^P | ||
| ~L | 奇数改ページ | ● |
^L | ||
| ~E | 偶数改ページ | ● |
^E | ||
| ~a | 任意の改行 | ● |
^j | ||
| ~y | 右インデントタブ | ● |
^y | ||
| ~i | 「ここまでインデント」文字 | ● |
^i | ||
| ~h | 先頭文字スタイルの終了文字 | ● |
^h | ||
| ~k | 結合なし | ● |
^k | ||
| ~Y | (変数)ランニングヘッダ(段落スタイル) | ● |
^Y | ||
| ~Z | (変数)ランニングヘッダ(文字スタイル) | ● |
^Z | ||
| ~u | (変数)カスタムテキスト | ● |
^u | ||
| ~T | (変数)最終ページ番号 | ● |
^T | ||
| ~H | (変数)章番号 | ● |
^H | ||
| ~S | (変数)作成日 | ● |
^S | ||
| ~o | (変数)修正日 | ● |
^o | ||
| ~D | (変数)出力日 | ● |
^D | ||
| ~l(小文字のL) | (変数)ファイル名 | ● |
^l(小文字のL) |
| 正規表現 | 意味 | InDesign拡張 | 検索のみ | InDesignワイルドカード | 用例・備考 |
|---|---|---|---|---|---|
| ^ | (位置)段落の始まり | ● |
|||
| $ | (位置)段落の終わり | ● |
|||
| \A | (位置)ストーリーの始まり | ● |
このメタキャラクタは「^」のように単独ではマッチしない。ストーリーの始まりが「abcabc」であるとき、「\Aabc」は最初の「abc」だけでなく、後ろの「abc」にもマッチする(これはおそらくInDesign CS3でのバグ)。現状での回避方法は「\A^abc」とすること。 | ||
| \Z | (位置)ストーリーの終わり | ● |
このメタキャラクタは「$」のように単独ではマッチしない。ストーリーの終わりが「abcabc」または「abcabc\r」であるとき、「abc\Z」は最後の「abc」にマッチする。ストーリーの最後に改行文字が入っていても、それは無視される。 | ||
| \z | (位置)ストーリーの終わり | ● |
このメタキャラクタは「$」のように単独ではマッチしない。ストーリーの終わりが「abcabc」であるとき、「abc\z」は最後の「abc」にマッチする。ストーリーの終わりが「abcabc\r」(改行で終わっている)であるとき、「abc\z」はマッチしない(「abc\r\z」と書く必要がある)。 | ||
| \< | (位置)単語の始まり | ● |
日本語環境の場合、「英数字」と「漢字・ひらがな・カタカナ」の境に単語境界が存在する。また、検索開始時のカーソル位置が、強制的に単語境界に設定されてしまうため、単語中にカーソルがあるときは、注意すること。以下\bも同じ。 | ||
| \> | (位置)単語の終わり | ● |
|||
| \b | (位置)単語の境界 | ● |
|||
| \B | (位置)単語の境界以外 | ● |
|||
| \G | (位置)最後のマッチ位置 | ● |
通常の正規表現では「\G」は最後のマッチ位置を表すが、InDesignでは検索開始時のカーソル位置にあたる。「abc abc」という文字列の先頭にカーソルがある時、「\Gabc」でマッチするのは最初のカーソル直後にある「abc」のみ。ストーリーの最初にマッチしてしまうのは、おそらく不具合。 | ||
| (?<= ) | 肯定後読み | ● |
たとえば、正規表現「(?<=東京都)港区」と書いた時、「東京都港区」の中の「港区」にはマッチするが、「名古屋市港区」には目もくれない。 | ||
| (?<! ) | 否定後読み | ● |
たとえば、正規表現「(?<!東京都)港区」と書いた時、「東京都港区」にだけマッチしない。「名古屋市港区」や「大阪市港区」の中の「港区」にはマッチする。 | ||
| (?= ) | 肯定先読み | ● |
たとえば、正規表現「東京都(?=港区)」と書いた時、「東京都港区」の中の「東京都」にはマッチするが、「東京都練馬区」や「東京都杉並区」には目もくれない。 | ||
| (?! ) | 否定先読み | ● |
「たとえば、正規表現東京都(?!港区)」と書いた時、「東京都港区」にだけマッチしない。「東京都練馬区」や「東京都杉並区」の中の「東京都」にはマッチする。 |
| 正規表現 | 意味 | InDesign拡張 | 検索のみ | InDesignワイルドカード | 用例・備考 |
|---|---|---|---|---|---|
| (?i) | 大文字と小文字を区別しない-オン | ● |
「(?i)abc」と書くと、「abc」にも「ABC」にも「aBc」にもマッチする。 | ||
| (?-i) | 大文字と小文字を区別しない-オフ | ● |
デフォルト。たとえば、正規表現「(?i)abc (?-i)abc」と書いたとき、「abc abc」にも「ABC abc」にも「aBc abc」にもマッチする。 | ||
| (?m) | 複数行-オン | ● |
デフォルト。「^」と「$」を強制段落(\r)で区切られたそれぞれの行の「行頭」と「行末」にマッチする。マルチラインモード。 | ||
| (?-m) | 複数行-オフ | ● |
検索範囲が「選択範囲」の時、選択範囲の文字列の最初文字の前に「^」がマッチし、最後の文字の後ろに「$」がマッチする。検索範囲が「ドキュメント」の時、カーソル位置とストーリーの最初の文字の前に「^」がマッチし、最後の文字の後ろに「$」がマッチする。 | ||
| (?s) | 単一行-オン | ● |
「.」が改行文字(\r)を含むようになる。「^.+」と書けば、検索開始位置からストーリーすべてにマッチする。シングルラインモード。 | ||
| (?-s) | 単一行-オフ | ● |
デフォルト。「.」は改行文字(\r)を含まない。 | ||
| (?x) | スペース文字を無視-オン | ● |
正規表現中に書かれたスペース文字を無視する。正規表現「(?x)ab c」は文字列「abc」にマッチする。 | ||
| (?-x) | スペース文字を無視-オフ | ● |
デフォルト。 | ||
| ¥Q〜¥E | リテラルテキストの範囲 | ● |
たとえば、テキストフレームの中に「[^a(b)c]」という文字列があり、この文字列にマッチさせたい時、通常はバックスラッシュでエスケープして「¥[¥^a¥(b¥)c¥]」などと書かなければならない。しかし、つまようじが多くて見づらいという人のために、「¥Q[^a(b)c]¥E」と書くことができる。つまり、「¥Q〜¥E」の中はリテラルとして扱われる。 |
| 正規表現 | 意味 | InDesign拡張 | 検索のみ | InDesignワイルドカード | 用例・備考 |
|---|---|---|---|---|---|
| ? | 直前の文字が0回または1回 | ● |
たとえば、正規表現「https?://」と書いた時、「http://」と「https://」マッチする。また、正規表現「Mac(intosh)?」と書いた時、「Macintosh」と「Mac」にマッチする。 | ||
| * | 直前の文字が0回以上 | ● |
たとえば、正規表現「^\s*\r」と書いた時、空行とスペースのみが0個以上の行がマッチする。 | ||
| + | 直前の文字が1回以上 | ● |
たとえば、正規表現「coo+l!」と書いた時、「cool!」にも「cooooool!」にも「cooooooooooooool!」にもマッチする。あまりクールな例ではないのだが... | ||
| ?? | 直前の文字が0回または1回(最小一致) | ● |
たとえば、文字列「hogehoge」に対して、正規表現「hoge(hoge)?」と書けば「hogehoge」がマッチするが、正規表現「hoge(hoge)??」と書けば最初の「hoge」だけがマッチする。とても控えめ(わたしみたい)な清楚な奴だけに、あまり使われない。 | ||
| *? | 直前の文字が0回以上(最小一致) | ● |
たとえば、CSVの二重引用符(空要素もありうる)ような文字列「"hogehoge"」に対して、★マークを入れるような場合、検索フィールドに正規表現「"(.*?)"」と書き、置換フィールドに「”★$1"」とすれば文字列の先頭に「★」がつけられる。 | ||
| +? | 直前の文字が1回以上(最小一致) | ● |
たとえば、文字列「<p><a href="http://www.seuzo.jp/">せうぞー</a></p>」に対して、正規表現「<.+>」と書くと文字列すべてにマッチしてしまう。最初のタグ「<p>」にマッチさせたい場合は「<[^>]+>」または「<.+?>」と書けばよい。非欲張りマッチ、最小マッチ。 | ||
| {n} | 直前の文字が少なくともn回 | ● |
このとき、必ずしもn回かっきりでないことに注意。たとえば「123456」という数字に対して「\d{2}」とすると、最初の「12」にマッチする。すなわちこの場合、「\d{2}」が常に2桁の数値を表しているわけではない。 | ||
| {n,} | 直前の文字がn回以上 | ● |
|||
| {n,m} | 直前の文字がn回以上m回以内 | ● |
必ずしもm回以内に納まっているものだけがマッチするわけではない。直前の文字がm回以上あったとしても、少なくともm回まではマッチする。 |
| 正規表現 | 意味 | InDesign拡張 | 検索のみ | InDesignワイルドカード | 用例・備考 |
|---|---|---|---|---|---|
| [ ] | 文字クラス | ● |
たとえば、正規表現「[abc]」と書いた時、文字「a」または「b」または「c」にマッチする。また、「[a-c]」と範囲を指定できる(この時の範囲はUnicode順)。さらに「[^abc]」は「abc」以外の文字にマッチする。この時、気をつけなければならないのは、[^abc]は改行文字も含んでしまうこと。「.」が改行文字を含まないことに慣れてしまうと、ついついやってしまいがちなミス。 | ||
| ( ) | グループマーキング | ● |
グループを使用する目的は主に2つ。ひとつは検索文字列をキャプチャして、置換文字の「$1〜$9」で参照させること。もうひとつは、選択「|」を使用するときに選択境界をはっきりさせることである。たとえば、タブ区切りの列の順序を入れ替えたい時、文字列「hoge\tfuga\tpuyo」に対して、検索フィールドに正規表現「(.+?)\t(.+?)\t(.+?)\r」と書き、置換フィールドに「$3\t$2\t$1\r」と書けば、結果は「puyo\tfuga\thoge」となる。 | ||
| (?: ) | グループのキャプチャをしない | ● |
文字列をグループ化するとき、グループ化された文字列をバッファにキャプチャしない。たとえば、正規表現「(.+?)\t(?:.+?)\t(.+?)\r」と書いた時、3番目のグループは「$2」で参照される。 | ||
| $0 | マッチした文字列すべて | 置換フィールドでのみ使用可能。グループ化の有無にかかわらず、マッチした文字列すべてを参照できる。 | |||
| $1〜$9 | グループ化された文字列(左から1~9) | 置換フィールドでのみ使用可能。文字列「いろはにほへとちり」に対して、正規表現(検索フィールド)に「^(.)(.)(.)(.)(.)(.)(.)(.)(.)」と書き、置換フィールドに「$9$8$7$6$5$4$3$2$1」と書けば、置換結果は「りちとへほにはろい」になる。番号は左から順に1〜9番が振られ、グループが入れ子になっているときは起こし括弧の順となる。 | |||
| \1〜\9 | 検索フィールドでのグループの再利用 | ● |
検索フィールド内で、正規表現「(hoge)\1」と書いた時、文字列「hogehoge」にマッチする。\1はマッチ文字列そのものであり、グループ内に書かれた正規表現が再度展開するわけではない。つまり、文字列「hoge1hoge2」に対して、正規表現「(hoge\d)\1」はマッチしない。この時、文字列「hoge1hoge1」にはマッチする。 | ||
| | | 選択 | ● |
たとえば、正規表現「hoge|fuga」は、「hoge」と「fuga」にマッチする。1月〜12月は「(1[0-2]|[1-9])月」と表現できる。 |
(c)2008 市川せうぞー