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 市川せうぞー