: |
パターンにおいて特別な文字を持つものは以下のとおりです。ただし、状況によっては特別な意味を持たず、通常の文字として扱われる場合があります。
以上に当てはまらないものは、その文字自身とマッチします。また、大文字、小文字のように、オプションによっては他の文字とマッチすることがあります。
オプションの意味は「オプション」を見てください。
\a |
ベル(ASCII コード 0x07、16 進表記、以下同様)を表します。
|
\b |
[ ] 内ではバックスペース(08) を表します。
それ以外では、単語境界を表します。
|
---|---|
\t |
水平タブ(0x09) を表します。
|
\n |
改行(0x0A) を表します。
|
\v |
垂直タブ(0x0B) を表します。
|
\f |
書式送り(0x0C) を表します。
|
\r |
復帰(0x0D) を表します。
|
\e |
エスケープ(0x1B) を表します。
|
\nn \nnn |
nn および nnn はそれぞれ 2 または 3 文字の 8 進数です。1 文字を 8 進数表記のコードで指定します。
|
\xnn |
nn は 2 文字の 16 進数です。1 文字を 16 進数表記のコードで指定します。
|
\un... |
n... は 4 文字から 6 文字の 16 進数で、Unicode のコードポイントを指定します。
|
\u{n...} |
Unicode コードポイントは \u{ } の形式で指定することもできます。 コードポイントの区切りを指定したい場合などに使用してください。さらに
\u{0042 0043}
のように、複数のコードポイントを空白で区切って記述することもできます。 |
\cX |
X は印字可能な ASCII 文字です。制御文字を表します。
|
\ |
以上に当てはまらない場合、\ は次の文字を通常の文字として処理するよう指示します。
文字 \ をパターンに含めたい場合は \\ と記述してください。
|
いずれもセル B2 に文字列が入力されていて、その文字列には abc が含まれているなら TRUE を返します。ただし、大文字・小文字、全角・半角は区別しませんので、ABC でも TRUE を返します。
セル D2 内の改行をすべて削除します。(Alt キー + Enter キー などによりセル内で改行させると、0x0A が入力されます。)
文字クラスとは文字の集合のことで、そのクラスに属する文字であればマッチするとみなされます。
[ ]、[^ ] については 3.5 で、\p{ }、\P{ } については 3.4 で詳しく解説します。
[ ] |
[ ] 内には、任意の文字を 1 個以上記述します。[ ] 内の任意の 1 文字にマッチします。
|
---|---|
[^ ] |
[^ ] 内には、任意の文字を 1 個以上記述します。[^ ] 内にない任意の 1 文字にマッチします。
|
. |
ピリオドは復帰・改行以外の任意の 1 文字にマッチします。
s が指定されている場合は、復帰・改行にもマッチします。
ピリオドを指定したい場合は \. と記述してください。
|
\w |
単語を構成する文字 1 文字にマッチします。単語を構成する文字とは、アンダースコア、数字、アルファベット、ひらがな、カタカナ、漢字などです。
本ソフトでは、Unicode の Alphabetic 属性を持つもの、または General_Category が Decimal_Number か Connector_Punctuation である文字としています。
|
\W |
\w 以外の 1 文字にマッチします。
|
\d |
10 進数 1 文字にマッチします。
|
\D |
\d 以外の 1 文字にマッチします。
|
\s |
空白文字 1 文字にマッチします。
具体的には、空白、タブ、復帰・改行などです。
|
\S |
\s 以外の 1 文字にマッチします。
|
\p{ } |
{} 内には Unicode の属性と値を指定します。指定された属性が指定された値である文字にマッチします。
最初に ^ を付けると、指定された値を持たない文字にマッチします。
詳細は次節とそのリンク先をご覧ください。
|
\P{ } |
{} 内には Unicode の属性と値を指定します。指定された属性が指定された値を持たない文字にマッチします。
詳細は次節とそのリンク先をご覧ください。
|
セル E2 に文字列が入力されている場合、10 進数以外の文字をすべて _ で置き換えた文字列を返します。
セル E2 に文字列が入力されている場合、10 進数をすべて削除した文字列を返します。
先に述べたように、Unicode の属性で照合することができます。\p{ } は指定した条件に当てはまる場合に成り立ち、\P{ } は指定した条件に当てはまらない場合に成り立ちます。
\p{ }、\P{ } に指定できる属性の名前とその記述の仕方は次の通りです。
General_Category または gc |
---|
\p{General_Category=属性値}
のいずれかで記述します。属性値に指定できる文字列のリストはこの表の下のリンクを参照してください。
\p{gc=属性値} \p{属性値} |
Script または sc |
\p{Script=属性値}
のいずれかで記述します。属性値に指定できる文字列のリストはこの表の下のリンクを参照してください。
\p{sc=属性値} |
Alphabetic または Alpha |
属性値は True と False の 2 つです。true の場合は省略できます。したがって、記述の仕方は
\p{Alphabetic=True}, \p{Alphabetic}(Alphabetic である)
となります。また、Alphabetic の代わりに Alpha を使うこともできます。
\p{Alphabetic=False}(Alphabetic でない) |
Uppercase または Upper |
Alphabetic と同様です。 |
Lowercase または Lower |
Alphabetic と同様です。 |
White_Space または WSpace、space |
Alphabetic と同様です。 |
Noncharacter_Code_Point または NChar |
Alphabetic と同様です。 |
Default_Ignorable_Code_Point または DI |
Alphabetic と同様です。 |
Block または blk |
\p{Block=属性値}
のいずれかで記述します。また、Microsoft と同様に属性値に Is を前に付けて
\p{blk=属性値} \p{Is属性値}
で指定することも可能です。属性値に指定できる文字列のリストはこの表の下のリンクを参照してください。
|
いずれも セル F2 に文字列が入力されている場合、大文字を ( ) で囲んで出力します。2 番目の引数 ($&) については「置換文字列」を参照してください。
ブラケット [ ] で文字を囲んで文字集合を表すことができます。これをブラケット表現と呼びます。
[任意個の文字] |
[ ] 内の 1 文字にマッチします。
ただし、[、]、^、-、\ は特別な意味を持つので、これらの文字を含めたい場合は、前に \ を置かなければなりません。
|
---|---|
[^任意個の文字] |
[ ] で指定されていない 1 文字にマッチします。
ただし、[、]、^、-、\ は特別な意味を持つので、これらの文字を含めたい場合は、前に \ を置かなければなりません。
|
i | Unicode の Simple Case Folding に従って変換してから比較します。 |
---|---|
w | 英数字と記号は半角に、カタカナは全角に変換してから比較します。 |
k | 全角ひらがなを全角カタカナに変換してから比較します。 |
d | 濁点・半濁点やダイアクリティカルマークを取り除いてから比較します。 |
l | ひらがな・カタカナの小文字を通常の文字に変換してから比較します。 |
セル B9 に文字列が入力されている場合、a、c、d、e、f、h とその大文字をすべて ( ) で囲みます。
セル B9 に文字列が入力されている場合、. と , をすべて ( ) で囲みます。
セル B9 に文字列が入力されている場合、10 進数でも空白でもない文字をすべて ( ) で囲みます。
セル B9 に文字列が入力されている場合、Alphabetic 属性を持つ文字をすべて ( ) で囲みます。
ブラケット表現 [ ] 内において [. と .] で囲まれた文字列は、通常の 1 文字と同様な一つの比較・照合の対象となります。
また、[. .] を使用すると、[. .] 内と対象の文字や文字列は Unicode Character Database の Decomposition_Mapping にしたがって変換(分解)されてから比較されます。例えば 1 文字の「ガ」(U+30AC)の場合、
[ ] 内では以下の文字クラスを指定することができます。判定は主に UCD(Unicode Character Database)の属性によって行います。
[:alnum:] |
Alphabetic が指定されている文字、または、General Category が Decimal_Number である文字。
|
---|---|
[:alpha:] |
Alphabetic が指定されている文字。
|
[:ascii:] |
ASCII 文字(16 進表記で 00 から FF まで)。
|
[:blank:] |
空白(ASCII コード 20、16 進表記、以下同様)、水平タブ(09)、垂直タブ(0B)、書式送り(0C)。
|
[:cntrl:] |
General Category が Control または Format である文字。
|
[:digit:] |
General Category が Decimal_Number である文字。
|
[:graph:] |
空白以外の印字可能文字。
|
[:lower:] |
Lowercase が指定されている文字。
|
[:print:] |
印字可能文字。空白も含める。
|
[:punct:] |
印字可能文字のうち、空白でもなく Alphabetic でもない文字。
|
[:space:] |
空白(ASCII コード 20)、水平タブ(09)、復帰(0A)、垂直タブ(0B)、書式送り(0C)、改行(0D)。
|
[:upper:] |
Uppercase が指定されている文字。
|
[:word:] |
[:alnum:] と General Category が Connector_Punctuation である文字。(Connector_Punctuation には _ (アンダースコア、ASCII コード 5F)も含まれる。)
|
[:xdigit:] |
16 進表記で使用する文字。0 から 9 まで、A から F まで, a から f までのいずれか 1 文字。
|
[:^digit:] |
[:digit:] 以外の 1 文字。
|
[:^space:] |
[:space:] 以外の 1 文字。
|
[:^word:] |
[:word:] 以外の 1 文字。
|
セル B9 に文字列が入力されている場合、大文字と 10 進数のすべてを ( ) で囲みます。
ブラケット表現内では、以下の集合演算を行うことができます。
記号 | 演算 | 例 |
---|---|---|
|| | 和 |
[ABCD||CDEF]
文字集合 {A,B,C,D} または文字集合 {C,D,E,F} のいずれかに属する文字の集合。
|
&& | 積 |
[[:ascii:]&&\p{Sm}]
ASCII 文字かつ数学記号である文字全体の集合。
|
-- | 差 |
[[:print:]--A-Fa-f]
印字可能な ASCII 文字のうち、A から F と a から f を除いた文字全体の集合。
|
~~ | 対称差 |
[A-D~~C-F]
範囲 A-D と範囲 C-F のいずれか一方にのみ属する文字全体の集合。
|
セル B9 に文字列が入力されている場合、その文字列から e、f、g、h、i 以外の Alphabetic な文字をすべて削除したものを出力します。
^ |
文字列の先頭にマッチします。
m オプションが指定されている場合は、復帰・改行の直後にもマッチします。
|
---|---|
$ |
文字列の終端にマッチします。
m オプションが指定されている場合は、復帰・改行の直前にもマッチします。
|
\A |
文字列の先頭にマッチします。
m オプションが指定されている場合も、文字列の先頭にのみマッチします。
|
\Z |
文字列の終端か、最後の文字が改行の場合はその直前にマッチします。
m オプションが指定されている場合も、文字列の終端か、最後の文字が改行の場合はその直前にマッチします。
|
\z |
文字列の終端にマッチします。
m オプションが指定されている場合も、文字列の終端にのみマッチします。
|
\G |
直前にマッチした部分文字列の終端にマッチします。
g オプションが指定されている場合にのみ有効です。
まだ一度もマッチしていない場合、この指定は無視されます。
|
\b |
単語の境界にマッチします。すなわち、前後の文字がそれぞれ \w と \W、またはその逆の場合にマッチします。
|
\B |
\b 以外の文字境界にマッチします。
|
パターンの一部をグループ化して部分正規表現を構成することができます。それには、グループを作成したい部分を ( ) で囲みます。
グループには次のような機能を持たせることができます。
(パターン) |
参照可能な部分正規表現を作成します。この形式の部分表現には ( が登場した順に番号が自動的に 1 から付けられます。
この部分表現にマッチした部分文字列は、同じパターン内では \1、\2、... で参照することができます。
置換文字列では $1、$2、... または ${番号} で参照することができます。
|
---|---|
(?<名前>パターン) (?'名前'パターン) |
名前で参照可能な部分正規表現を作成します。この形式の部分表現には番号は付けられません。
この部分表現にマッチした部分文字列は、同じパターン内では \k<名前> または \k'名前' で参照することができます。
置換文字列では ${名前} で参照することができます。
|
(?:パターン) |
単にグループ化だけです。参照はできません。
|
(?オプション:パターン) |
カッコ内に限りオプション設定を変更します。オプションの記述の仕方は先に説明したものと同じです。参照はできません。
|
(?>パターン) |
( ) 内ではバックトラックしません。また、参照はできません。
|
(?=パターン) |
現在の処理位置の直後が指定されているパターンにマッチする場合に成立します。
通常のパターンとは以下の点が異なります。
詳細は下の使用例を見てください。
|
(?!パターン) |
現在の処理位置の直後が指定されているパターンにマッチしない場合に成立します。
それ以外は (?=パターン) と同様です。
|
(?<=パターン) |
現在の処理位置の直前が指定されているパターンにマッチする場合に成立します。
それ以外は (?=パターン) と同様です。
|
(?<!パターン) |
現在の処理位置の直前が指定されているパターンにマッチしない場合に成立します。
それ以外は (?=パターン) と同様です。
|
B8 の内容 | excel#Excel$EXCEL%eXceL |
---|---|
出力 | excel#エクセル$エクセル%eXceL |
B8 の内容 | excel#Excel$EXCEL%eXceL |
---|---|
出力 | excelエクセルEXCEL%eXceL |
部分正規表現にマッチした部分文字列を、成立条件として指定することができます。
\1, ..., \9 |
1 番目の ( )、...、9 番目の ( ) にマッチした部分文字列にマッチしているか調べるよう指示します。
\ の後に 2 桁以上の数値を続けると、文字コードを 8 進数で表記したものと解釈されます。例えば、\10 は、バックスペースを 8 進数で表したものと解釈されます。
10 個以上の後方参照を使用したい場合は、次の \g による後方参照を使ってください。
|
---|---|
\gn |
n 番目の ( ) にマッチした部分文字列にマッチしているか調べるよう指示します。n は任意の正の整数です。
|
\k<名前> \k'名前' |
指定された名前の部分正規表現にマッチした部分文字列にマッチしているか調べるよう指示します。
|
置換文字列からも参照できます。詳細は 置換文字列 のページをご覧ください。
これまでに述べた正規表現の要素に繰り返しを指定することができます。
* |
0 回以上繰り返すことを表します。
|
---|---|
+ |
1 回以上繰り返すことを表します。
|
? |
0 回、または 1 回現れることを表します。
|
{n} |
ちょうど n 回繰り返すことを表します。
|
{n,} |
n 回以上繰り返すことを表します。
|
{n,m} |
n 回以上 m 回以下繰り返すことを表します。
|
以上を指定した場合、できるだけ多く繰り返すという前提で調べます。逆に、できるだけ少なくなるように調べたい場合は後ろに ? を付けます。
*? |
0 回以上でできるだけ少なく繰り返すことを表します。
|
---|---|
+? |
1 回以上でできるだけ少なく繰り返すことを表します。
|
?? |
0 回、または 1 回でできるだけ少なく繰り返すことを表します。
|
{n,}? |
n 回以上でできるだけ少なく繰り返すことを表します。
|
{n,m}? |
n 回以上 m 回以下でできるだけ少なく繰り返すことを表します。
|
パターン 1 | パターン 2 |
| はバーティカルバー(ACII コード 0x7C)です。パターン 1 または パターン 2 のいずれかにマッチすることを表します。
|
---|
条件により、調べるパターンを変えることができます。これらは (?(条件)パターン 1 | パターン 2) の形式で記述されます。
(?(番号)パターン 1 | パターン 2) |
番号に対応する ( ) が既に成立している場合は パターン 1、そうでない場合は パターン 2 で調べられます。
|
---|---|
(?(<名前>)パターン 1 | パターン 2) (?('名前')パターン 1 | パターン 2) |
名前に対応する (?<名前> ) または (?'名前' ) が既に成立している場合は パターン 1、そうでない場合は パターン 2 で調べられます。
|
(?(?=パターン C)パターン 1 | パターン 2) (?(?!パターン C)パターン 1 | パターン 2) (?(?<=パターン C)パターン 1 | パターン 2) (?(?<!パターン C)パターン 1 | パターン 2) |
それぞれ (?=パターン C)、(?!パターン C)、(?<=パターン C)、(?<!パターン C) が成立している場合は パターン 1、そうでない場合は パターン 2 で調べられます。
|
(?(パターン C)パターン 1 | パターン 2) |
以上に当てはまらない場合は (?(?=パターン C)パターン 1 | パターン 2) と解釈されます。
|
(?オプション) |
以降のオプション設定を変更します。
|
---|---|
(?#コメント) |
コメント。
|
#コメント |
x オプションが指定されている場合にのみ有効です。行末までコメントとみなします。
|