2.3. XLCTextEx パターン

注意

Excel 2003 とそれ以前のバージョンでは、C API は Unicode をサポートしておらず、データの入出力は Shift-JIS で行っています。本プログラムでは Shift-JIS を Unicode に変換してから処理していますが、一部変換できない文字があります。
参照 SHIFT - JIS と Unicode 間の変換問題
このような理由で正しく処理できない場合があることをご了承ください。

  1. 通常の文字
  2. エスケープ文字
  3. 文字クラス
  4. Unicode 属性による文字クラス
  5. ブラケット表現による文字クラス
    1. 照合要素
    2. ブラケット表現内で使用できる文字クラス
    3. ブラケット表現内における集合演算
  6. その他の成立条件
  7. グループ化
  8. 後方参照
  9. 量指定子
  10. 選択
  11. その他

1.通常の文字

パターンにおいて特別な文字を持つものは以下のとおりです。ただし、状況によっては特別な意味を持たず、通常の文字として扱われる場合があります。

\ . ^ $ ( ) [ ] - : = * + ? { } , | # ! < >
上記の文字を通常の文字として使用したい場合は前に \ をつけてください。例えば \. はピリオド(ドット)という文字として扱われます。

以上に当てはまらないものは、その文字自身とマッチします。また、大文字、小文字のように、オプションによっては他の文字とマッチすることがあります。

使用例

オプションの意味は「オプション」を見てください。

=XLCRegExMatch("abc",B2)
セル B2 に文字列が入力されていて、その文字列に abc というパターンが含まれているなら TRUE を返します。
=XLCRegExMatch("abc",B2,"iw")
上の例に i オプションと w オプションを追加したものです。大文字・小文字、全角・半角を区別せずに判定しますので、ABC や abc、ABC、AbC が含まれている場合も TRUE を返します。
=XLCRegExReplace("キャ","キヤ",A2,"g")
セル A2 に文字列が入力されている場合、文字列中の「キャ」を「キヤ」に置き換えた文字列を出力します。
g オプションが指定されているので、すべての「キャ」を「キヤ」に置き換えた文字列を出力します。
g オプションが指定されていない場合は、最初に見つかった「キャ」だけを「キヤ」に置き換えた文字列を出力します。
指定された文字列に「キャ」がない場合は、元の文字列をそのまま出力します。
=XLCRegExReplace("キャ","キヤ",A2,"gw")
上の例に w オプションを追加したものです。半角の「キャ」も「キヤ」に置換した文字列を出力します。
=XLCRegExReplace("キャ","キヤ",A2,"gk")
k オプションを追加した場合、ひらがなの「きゃ」もカタカナの「キヤ」に置換します。
=XLCRegExReplace("キャ","キヤ",A2,"gwk")
w オプションと k オプション両方を指定したものです。「キャ」と「きゃ」も「キヤ」に置換した文字列を出力します。
=XLCRegExReplace("キャ","キヤ",A2,"gd")
d オプションが指定されていると、濁点や半濁点の有無を区別しなくなります。この例では、「ギャ」も「キヤ」に置換した文字列を出力します。
=XLCRegExReplace("キャ","キヤ",A2,"gdk")
さらに k オプションを指定すると、「ぎゃ」も「キヤ」に置換した文字列を出力します。
=XLCRegExReplace("うえ","上",A2,"gwkl")
l オプションを追加すると、ひらがな・カタカナの小文字と通常の文字も区別しなくなります。この例では「うえ」の他に「ウエ」、「ウエ」、「ぅぇ」、「ゥェ」、「ゥェ」も「上」に置換します。

注意

照合や置換は文字ごとに行います。「ギ」と「キ゛」(「キ」と「゛」の 2 文字)は別のものとして扱われます。同様に半角の「ギ」は「キ」と「゙」の 2 文字ですので、w オプションを指定しても 1 文字の「ギ」とはマッチしません。
ブラケット表現 [ ] 内で照合要素 [. .] (後述)を使うと、このような場合にも対応できます。
Top へ

2.エスケープ文字

\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 文字です。制御文字を表します。
\
以上に当てはまらない場合、\ は次の文字を通常の文字として処理するよう指示します。
文字 \ をパターンに含めたい場合は \\ と記述してください。
使用例
=XLCRegExMatch("\141\x62\x63", B2,"iw")
=XLCRegExMatch("\u0061\u{0062 0063}",B2,"iw")

いずれもセル B2 に文字列が入力されていて、その文字列には abc が含まれているなら TRUE を返します。ただし、大文字・小文字、全角・半角は区別しませんので、ABC でも TRUE を返します。

=XLCRegExReplace("\n","",D2,"g")

セル D2 内の改行をすべて削除します。(Alt キー + Enter キー などによりセル内で改行させると、0x0A が入力されます。)

Top へ

3.文字クラス

文字クラスとは文字の集合のことで、そのクラスに属する文字であればマッチするとみなされます。

[ ][^ ] については 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 の属性と値を指定します。指定された属性が指定された値を持たない文字にマッチします。
詳細は次節とそのリンク先をご覧ください。
使用例
=XLCRegExReplace("\D","_",E2,"g")

セル E2 に文字列が入力されている場合、10 進数以外の文字をすべて _ で置き換えた文字列を返します。

=XLCRegExReplace("\d","",E2,"g")

セル E2 に文字列が入力されている場合、10 進数をすべて削除した文字列を返します。

Top へ

4.Unicode 属性による文字クラス

先に述べたように、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 である)
\p{Alphabetic=False}(Alphabetic でない)
となります。また、Alphabetic の代わりに Alpha を使うこともできます。
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=属性値}
\p{blk=属性値}
のいずれかで記述します。また、Microsoft と同様に属性値に Is を前に付けて
\p{Is属性値}
で指定することも可能です。属性値に指定できる文字列のリストはこの表の下のリンクを参照してください。
使用例
=XLCRegExReplace("\p{General_Category=Uppercase_Letter}", "($&)", F2,"g")
=XLCRegExReplace("\p{gc=Lu}", "($&)", F2,"g")
=XLCRegExReplace("\p{Lu}", "($&)", F2,"g")

いずれも セル F2 に文字列が入力されている場合、大文字を ( ) で囲んで出力します。2 番目の引数 ($&) については「置換文字列」を参照してください。

Top へ

5.ブラケット表現による文字クラス

ブラケット [ ] で文字を囲んで文字集合を表すことができます。これをブラケット表現と呼びます。

[任意個の文字]
[ ] 内の 1 文字にマッチします。
ただし、[]^-\ は特別な意味を持つので、これらの文字を含めたい場合は、前に \ を置かなければなりません。
[^任意個の文字]
[ ]指定されていない 1 文字にマッチします。
ただし、[]^-\ は特別な意味を持つので、これらの文字を含めたい場合は、前に \ を置かなければなりません。
使用例
=XLCRegExReplace("[ac-fh]","($&)",B9,"gi")

セル B9 に文字列が入力されている場合、a、c、d、e、f、h とその大文字をすべて ( ) で囲みます。

=XLCRegExReplace("[.,]","($&)",B9,"g")

セル B9 に文字列が入力されている場合、., をすべて ( ) で囲みます。

=XLCRegExReplace("[^\d\s]","($&)",B9,"g")

セル B9 に文字列が入力されている場合、10 進数でも空白でもない文字をすべて ( ) で囲みます。

=XLCRegExReplace("[\p{Alphabetic}]","($&)",B9,"g")

セル B9 に文字列が入力されている場合、Alphabetic 属性を持つ文字をすべて ( ) で囲みます。

Top へ

5.1.照合要素 [. .]

ブラケット表現 [ ] 内において [..] で囲まれた文字列は、通常の 1 文字と同様な一つの比較・照合の対象となります。

また、[. .] を使用すると、[. .] 内と対象の文字や文字列は Unicode Character Database の Decomposition_Mapping にしたがって変換(分解)されてから比較されます。例えば 1 文字の「ガ」(U+30AC)の場合、

  1. [[.ガ.]] において、ガ(U+30AC)は カ(U+30AB)と濁点(U+3099)に分解されます。
  2. したがって、[[.ガ.]] は ガ(U+30AC)だけでなく ガ(U+30AB と U+3099)にもマッチします。
  3. Decomposition_Mapping によると、半角の「カ」は 全角の カ(U+30AB)に、半角の濁点(U+FF9E)は全角の濁点(U+3099)に変換されます。よって、半角の ガ も [[.ガ.]] にマッチします。
  4. Decomposition_Mapping では、濁点 ゛(U+309B)は 空白(U+0020)と濁点(U+3099)に分解されることになっていますが、本ソフトでは濁点(U+3099)のみに変更しています。そのため、カ゛(U+30AB と U+309B)も [[.ガ.]] にマッチします。
  5. k オプション(ひらがな・カタカナを区別しない)も有効です。

使用例
=XLCRegExReplace("[[.ギ.]]ャ","($&)",C5,"g")
セル A2 に文字列が入力されている場合、文字列中の「ギャ」を ( ) で囲んだ文字列を出力します。
上述の通り、[[.ギ.]] は 2 文字からなる「キ゛」や半角の「ギ」にもマッチしますので、文字列に「キ゛ャ」や 「ギャ」(ャ は全角)があればそれも ( ) で囲まれます。
=XLCRegExReplace("[[.ギ.]]ャ","($&)",C5,"gk")
さらに k オプションを追加すると、ひらがなの「ぎゃ」や「き゛ゃ」なども ( ) で囲まれます。
Top へ

5.2.ブラケット表現内で使用できる文字クラス

[ ] 内では以下の文字クラスを指定することができます。判定は主に UCD(Unicode Character Database)の属性によって行います。

[:alnum:]
Alphabetic が指定されている文字、または、General CategoryDecimal_Number である文字。
[:alpha:]
Alphabetic が指定されている文字。
[:ascii:]
ASCII 文字(16 進表記で 00 から FF まで)。
[:blank:]
空白(ASCII コード 20、16 進表記、以下同様)、水平タブ(09)、垂直タブ(0B)、書式送り(0C)。
[:cntrl:]
General CategoryControl または Format である文字。
[:digit:]
General CategoryDecimal_Number である文字。
[:graph:]
空白以外の印字可能文字。
[:lower:]
Lowercase が指定されている文字。
[:print:]
印字可能文字。空白も含める。
[:punct:]
印字可能文字のうち、空白でもなく Alphabetic でもない文字。
[:space:]
空白(ASCII コード 20)、水平タブ(09)、復帰(0A)、垂直タブ(0B)、書式送り(0C)、改行(0D)。
[:upper:]
Uppercase が指定されている文字。
[:word:]
[:alnum:]General CategoryConnector_Punctuation である文字。(Connector_Punctuation には _ (アンダースコア、ASCII コード 5F)も含まれる。)
[:xdigit:]
16 進表記で使用する文字。0 から 9 まで、A から F まで, a から f までのいずれか 1 文字。
[:^digit:]
[:digit:] 以外の 1 文字。
[:^space:]
[:space:] 以外の 1 文字。
[:^word:]
[:word:] 以外の 1 文字。
使用例
=XLCRegExReplace("[[:upper:][:digit:]]","($&)",B9,"g")

セル B9 に文字列が入力されている場合、大文字と 10 進数のすべてを ( ) で囲みます。

Top へ

5.3.ブラケット表現内における集合演算

ブラケット表現内では、以下の集合演算を行うことができます。

記号演算
||
[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 のいずれか一方にのみ属する文字全体の集合。
使用例
=XLCRegExReplace("[\p{alphabetic}--e-i]","",B9,"g")

セル B9 に文字列が入力されている場合、その文字列から e、f、g、h、i 以外の Alphabetic な文字をすべて削除したものを出力します。

Top へ

6.その他の成立条件

^
文字列の先頭にマッチします。
m オプションが指定されている場合は、復帰・改行の直後にもマッチします。
$
文字列の終端にマッチします。
m オプションが指定されている場合は、復帰・改行の直前にもマッチします。
\A
文字列の先頭にマッチします。
m オプションが指定されている場合も、文字列の先頭にのみマッチします。
\Z
文字列の終端か、最後の文字が改行の場合はその直前にマッチします。
m オプションが指定されている場合も、文字列の終端か、最後の文字が改行の場合はその直前にマッチします。
\z
文字列の終端にマッチします。
m オプションが指定されている場合も、文字列の終端にのみマッチします。
\G
直前にマッチした部分文字列の終端にマッチします。
g オプションが指定されている場合にのみ有効です。
まだ一度もマッチしていない場合、この指定は無視されます。
\b
単語の境界にマッチします。すなわち、前後の文字がそれぞれ \w\W、またはその逆の場合にマッチします。
\B
\b 以外の文字境界にマッチします。
使用例
=XLCRegExMatch("^A",D2,"i")
セル D2 に文字列が入力されていて、その文字列の先頭が A または a なら TRUE を返します。
Top へ

7.グループ化

パターンの一部をグループ化して部分正規表現を構成することができます。それには、グループを作成したい部分を ( ) で囲みます。

グループには次のような機能を持たせることができます。

(パターン)
参照可能な部分正規表現を作成します。この形式の部分表現には ( が登場した順に番号が自動的に 1 から付けられます。
この部分表現にマッチした部分文字列は、同じパターン内では \1\2、... で参照することができます。
置換文字列では $1$2、... または ${番号} で参照することができます。
(?<名前>パターン)
(?'名前'パターン)
名前で参照可能な部分正規表現を作成します。この形式の部分表現には番号は付けられません。
この部分表現にマッチした部分文字列は、同じパターン内では \k<名前> または \k'名前' で参照することができます。
置換文字列では ${名前} で参照することができます。
(?:パターン)
単にグループ化だけです。参照はできません。
(?オプション:パターン)
カッコ内に限りオプション設定を変更します。オプションの記述の仕方は先に説明したものと同じです。参照はできません。
(?>パターン)
( ) 内ではバックトラックしません。また、参照はできません。
(?=パターン)
現在の処理位置の直後が指定されているパターンにマッチする場合に成立します。
通常のパターンとは以下の点が異なります。
  • 成立しても処理位置は変化しません。
  • 成立してもマッチした部分文字列には含められません。
詳細は下の使用例を見てください。
(?!パターン)
現在の処理位置の直後が指定されているパターンにマッチしない場合に成立します。
それ以外は (?=パターン) と同様です。
(?<=パターン)
現在の処理位置の直前が指定されているパターンにマッチする場合に成立します。
それ以外は (?=パターン) と同様です。
(?<!パターン)
現在の処理位置の直前が指定されているパターンにマッチしない場合に成立します。
それ以外は (?=パターン) と同様です。
使用例
=XLCRegExReplace("(?i:ab)c","($&)",A12,"g")
セル A12 に文字列が入力されている場合、文字列中の abc をすべて ( ) で囲んで出力します。ただし、ab については大文字・小文字を区別しないので、ABc や aBc なども ( ) で囲まれます。
使用例
=XLCRegExReplace("(?<=\W)excel(?=\W)","エクセル",B8,"gi")
セル B8 内の文字列に対して、直前が非単語文字、直後も非単語文字となっている文字列 excel を文字列 エクセル で置き換えます。その際、
という特徴があります。これにより、例えば次のような結果が得られます。
B8 の内容 excel#Excel$EXCEL%eXceL
出力 excel#エクセル$エクセル%eXceL
この例では次のようにマッチングが行われます。
  1. まず #Excel$Excel にマッチしますので、Excelエクセル で置き換えます。この時点で処理位置は、$EXCEL% の直前となっています。
  2. 次に $ から調べますので、$EXCEL%EXCEL にマッチします。
これに対して
=XLCRegExReplace("\Wexcel\W","エクセル",B8,"gi")
は、非単語文字、excel、非単語文字、という文字列にマッチします。前に例に対しこの場合は、
B8 の内容 excel#Excel$EXCEL%eXceL
出力 excelエクセルEXCEL%eXceL
という結果が得られます。これは次のようにマッチングが行われるためです。
  1. まず #Excel$ 全体にマッチし、エクセル に置き換えられます。この時点での処理位置は、EXCEL% の直前となっています。
  2. 次に残った EXCEL%eXceL が調べられますが、マッチする部分列は見つかりません。
Top へ

8.後方参照

部分正規表現にマッチした部分文字列を、成立条件として指定することができます。

\1, ..., \9
1 番目の ( )、...、9 番目の ( ) にマッチした部分文字列にマッチしているか調べるよう指示します。
\ の後に 2 桁以上の数値を続けると、文字コードを 8 進数で表記したものと解釈されます。例えば、\10 は、バックスペースを 8 進数で表したものと解釈されます。
10 個以上の後方参照を使用したい場合は、次の \g による後方参照を使ってください。
\gn
n 番目の ( ) にマッチした部分文字列にマッチしているか調べるよう指示します。n は任意の正の整数です。
\k<名前>
\k'名前'
指定された名前の部分正規表現にマッチした部分文字列にマッチしているか調べるよう指示します。

置換文字列からも参照できます。詳細は 置換文字列 のページをご覧ください。

使用例
=XLCRegExReplace("([:;])excel\1",",Excel,",C2,"gi")
セル C2 内に部分文字列 :excel:;excel; があればすべて ,Excel, に置換します。
番号でなく名前を付けて参照することもできます。
=XLCRegExReplace("(?<delim>[:;])excel\k<delim>",",Excel,",C2,"gi")
Top へ

9.量指定子

これまでに述べた正規表現の要素に繰り返しを指定することができます。

*
0 回以上繰り返すことを表します。
+
1 回以上繰り返すことを表します。
?
0 回、または 1 回現れることを表します。
{n}
ちょうど n 回繰り返すことを表します。
{n,}
n 回以上繰り返すことを表します。
{n,m}
n 回以上 m 回以下繰り返すことを表します。

以上を指定した場合、できるだけ多く繰り返すという前提で調べます。逆に、できるだけ少なくなるように調べたい場合は後ろに ? を付けます。

*?
0 回以上でできるだけ少なく繰り返すことを表します。
+?
1 回以上でできるだけ少なく繰り返すことを表します。
??
0 回、または 1 回でできるだけ少なく繰り返すことを表します。
{n,}?
n 回以上でできるだけ少なく繰り返すことを表します。
{n,m}?
n 回以上 m 回以下でできるだけ少なく繰り返すことを表します。
使用例
=XLCRegExReplace("\w+","($&)",A15,"g")
セル A15 に文字列が入力されている場合、単語を ( ) で囲んで出力します。
=XLCRegExReplace("^\s*","",A15)
セル A15 に文字列が入力されている場合、先頭に空白があればそれを取り除いて出力します。
=XLCRegExReplace("[\w--県]{2,3}県","($&)",A21,"g")
セル A21 に文字列が入力されている場合、「県」以外の単語用文字 2 または 3 個の後に「県」が続いている部分文字列があれば、それらをすべて ( ) で囲んで出力します。
Top へ

10.選択

パターン 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) と解釈されます。
使用例
=XLCRegExReplace("アメジスト|紫水晶|amethyst","アメシスト",D9,"gi")
セル D9 に文字列が入力されている場合、文字列中に「アメジスト」、「紫水晶」、「amethyst」(大文字でもよい)のいずれかがあればすべて「アメシスト」に置換して出力します。
Top へ

11.その他

(?オプション)
以降のオプション設定を変更します。
(?#コメント)
コメント。
#コメント
x オプションが指定されている場合にのみ有効です。行末までコメントとみなします。
使用例
=XLCRegExReplace("T(?i)he","The",D14, "g")
The(h と e は大文字でも小文字でもよい)をすべて The に置き換えて出力します。
=XLCRegExReplace("アメジスト|紫水晶|amethyst(?# 2月の誕生石)","アメシスト",D9,"gi")
(?# ) は読み飛ばされますので、実際の処理には影響しません。
=XLCRegExReplace("アメジスト | 紫水晶 | amethyst # 2月の誕生石","アメシスト",D9,"gix")
パターンを見やすくするために | の左右に空白を入れ、# 以降にコメントを入れています。x オプションを指定すると、パターン中の空白を取り除き、# 以降行末までをコメントとして処理します。
Top へ