Documentation/Calc 関数/REGEX

    From The Document Foundation Wiki
    This page is a translated version of the page Documentation/Calc Functions/REGEX and the translation is 100% complete.
    Other languages:


    Function name:

    REGEX

    Category:

    Text

    Summary:

    テキスト文字列を正規表現と照合し、引数の設定に応じて、一致したテキストを抽出または置換します。
    ヘルプ/REGEX

    Syntax:

    REGEX(テキスト; 正規表現パターン[; [置換文字列][; フラッグ または 出現箇所]])

    Returns:

    引数の値に応じて、次のいずれかを返します。各戻り値の出現の詳細 (例題付き)については、以下の #Additional details: セクションを参照してください。

    1. 元のテキストから抽出された部分文字列のコピー。
    2. 1つまたは複数の一致を置換することによって変更された、元のテキストのコピー。
    3. 変更されていない、元のテキストのコピー。
    4. 該当する値がないというエラー (#N/A)。

    Arguments:

    テキスト は、正規表現パターン を適用する元のテキストであるテキスト文字列 (引用符内)、またはテキスト文字列を含むセルへの参照です。

    正規表現パターン は、テキストに適用される正規表現であるテキスト文字列 (引用符内)、またはテキスト文字列を含むセルへの参照です。

    置換文字列 は、テキスト文字列 (引用符内)、またはテキスト文字列を含むセルへの参照で、使用される置換テキストです。 置換文字列 を空の文字列に設定すると、一致した文字を削除するメカニズムとして使用できます。

    フラッグ または 出現箇所 は、次のいずれかのオプションです:

    1. 単一の小文字 "g" で構成される文字列、またはそのようなテキスト文字列を含むセルへの参照。 "g" は、グローバル置換を選択するために使用され、すべての一致に置換が適用されます。
    2. 使用される特定の一致を示す、負でない整数、またはそのような整数を含むセルへの参照。
    • 正規表現パターン が有効な正規表現でない場合、REGEX は無効な引数エラー (エラー:502) の表示になります。
    • フラッグ または 出現箇所 が一つの小文字 "g"以外の文字を含む数値以外のテキスト文字列である場合、 REGEX は無効な引数エラー (エラー:502)の表示になります。
    • フラッグ または 出現箇所 が負の数値の場合、 REGEX は無効な引数エラー (エラー:502) の表示になります。
    • フラッグ または 出現箇所 が負ではない整数以外の数値の場合、REGEX はその floor 値に変換され適応されます。
    • 置換文字列 が省略され、 フラッグ または 出現箇所 が "g" に設定されている場合、 REGEX は、 置換文字列フラッグ または 出現箇所 の両方が省略されたかのように動作します。

    Additional details:

    REGEX 関数に特有の詳細

    • REGEX 関数の操作は、ツール ▸ オプション ▸ LibreOffice Calc ▸ 計算式 (または macOS では LibreOffice ▸ Preferences ▸ LibreOffice Calc ▸ 計算式) ダイアログの "数式のワイルドカード" 領域で現在選択されているオプションには依存しません。
    • 初期のデフォルトでは、 REGEX で大文字と小文字を区別した一致が使用されますが、これは ICU 正規表現内のフラグを使用して変更できます。たとえば、=REGEX("test";"(?i)"& "TEST") のように、正規表現内に "(?i)" を含めると、大文字と小文字を区別しない一致に変更されます。
    • 引数に渡された元の文字列 Text は、REGEX によって行われた置換の影響を受けません。– 変更は、返される文字列にのみ反映されます。
    • REGEX は、関数に渡される引数に応じて、5つの異なる "モード" のいずれかで動作すると考えると理解しやすいでしょう。これらのモードは次のとおりです。:
    1. REGEX(テキスト; 正規表現パターン) は、テキスト内の正規表現パターンの最初の一致を抽出します。この単純な形式は、文字列が事前定義されたパターン (電話番号、電子メールアドレス、郵便番号など) に準拠しているかどうかをチェックするのに役立ちます。
      • 数式 =REGEX("LibreOffice Calc"; ".c") は、先頭に他の文字が続く小文字の "c" の最初の出現を抽出し、文字列 "ic" を返します。
      • 数式 =REGEX("LibreOffice Calc"; "Z") は、一致するものが見つからず、 #N/A を返します。
    2. REGEX(テキスト; 正規表現パターン; 置換文字列)は、テキスト正規表現パターン の最初の一致を 置換文字列に置き換えます。一致がある場合、 REGEX rは テキストの変更されたバージョンを返します。一致がない場合、 テキスト は変更されずに返されます。
      • 数式 =REGEX("Initialise new variables and optimise your code."; "ise"; "ize") は、 "Initialize new variables and optimise your code." を返します。
      • 数式 =REGEX("LibreOffice Calc"; "Z"; "?") は、一致するものが見つからず、文字列 "LibreOffice Calc" を変更せずに返します。
    3. REGEX(テキスト; 正規表現パターン; 置換文字列; "g") は、テキスト正規表現パターン に一致する文字列をすべて 置換文字列 に置き換えます。一致する文字列がある場合 REGEX は テキストの変更されたバージョンを返します。一致する文字列がない場合、 テキスト は変更されずに返されます。
      • 数式 =REGEX("Initialise new variables and optimise your code."; "ise"; "ize"; "g") は、 "Initialize new variables and optimize your code." を返します。
      • 数式 =REGEX("LibreOffice Calc"; "Z"; "?"; "g") は、一致するものが見つからず、文字列 "LibreOffice Calc" を変更せずに返します。
    4. REGEX(テキスト; 正規表現パターン; ; フラッグ または 出現箇所) は、テキスト 内の 正規表現パターン のn番目の一致を抽出します。 (ここで、n出現箇所 引数の値によって指定されます)
      • 数式 =REGEX("LibreOffice Calc"; ".c"; ; 1) は、他の文字が前に付いた小文字の "c" の最初の出現を抽出し、文字列 "ic" を返します。
      • 数式 =REGEX("LibreOffice Calc"; ".c"; ; 2) は、他の文字が前に付いた小文字の "c" の 2 番目の出現を抽出し、文字列 "lc" を返します。
      • 数式 =REGEX("LibreOffice Calc"; ".c"; ; 3) は、一致するものが見つからず、 #N/A を返します。
      • 出現箇所 の値 0 は特殊なケースであり、REGEX は、テキスト を未修正のまま返します。
    5. REGEX(テキスト; 正規表現パターン; 置換文字列; 出現箇所) は、テキスト正規表現パターン のn番目の一致を 置換文字列 に置き換えます(ここで、n出現箇所 引数の値によって与えられます)。 一致がある場合、REGEX は テキスト の変更されたバージョンを返します。一致がない場合、 テキスト は変更されずに返されます。
      • 数式 =REGEX("Initialise new variables and optimise your code."; "ise"; "ize"; 1) は、 "Initialize new variables and optimise your code." を返します。
      • 数式 =REGEX("Initialise new variables and optimise your code."; "ise"; "ize"; 2) は、 "Initialise new variables and optimize your code." を返します。
      • 数式 =REGEX("Initialise new variables and optimise your code."; "ise"; "ize"; 3) は、文字列 "Initialise new variables and optimise your code." を変更せずに返します。
      • 出現箇所 の値 0 は特殊なケースであり、 REGEX は、テキスト を未修正のまま返します。


    Calc の正規表現に関する一般事項

    Note pin.svg

    Note:
    便宜上、このサブセクションの情報は、正規表現を操作する関数を説明するすべてのページで繰り返されます。

    • 正規表現とは、一致させるテキストのパターンを定義する文字列です。より詳細で一般的な背景情報は、Regular expression ページにあります。
    • 正規表現は多くのドメインで広く使用されており、様々な正規表現プロセッサが利用可能です。Calc では、International Components for Unicode (ICU) のオープンソース正規表現パッケージ を採用しています。ICU 正規表現の構文の完全な定義を含む詳細については、Regular Expressions のドキュメントを参照してください。
    • さらに、LibreOffice のヘルプ・システムは、高水準の 正規表現リスト を提供します。
    • Calc の正規表現エンジンは、番号付きキャプチャ・グループ をサポートしています。これにより、一致するサブ範囲を識別し、置換テキスト内で使用できます。括弧は、正規表現のコンポーネントをグループ化し、番号付きキャプチャ・グループを作成するために使用されます。キャプチャ・グループを置換テキストに挿入するには、"$n" 形式を使用します。ここで、"n" はキャプチャ・グループの番号です。

    Examples:

    Formula Description Returns
    =REGEX("123456ABCDEF"; "[:digit:]"; "Z") この場合、関数は "Z23456ABCDEF"を返します。最初に一致した数字が "Z" に置き換えられます。 Z23456ABCDEF
    =REGEX(D1; D2; D3; D4) ここで、セル D1 から D4 には、それぞれ文字列 "123456ABCDEF" ; "[:digit:]" ; "Z" ; "g" が含まれます。 この場合、関数は "ZZZZZZABCDEF" を返します。すべての数字は "Z" に置き換えられます。 ZZZZZZABCDEF
    =REGEX("123456ABCDEF"; "[126]"; ""; "g") この場合、関数は "345ABCDEF" を返します。 "1"、 "2" または "6" が有れば空の文字に置き換えられ、削除されます。 345ABCDEF
    =REGEX("axbxcxd"; ".x"; ; 2) この場合、関数は ".x" の2番目に一致となる "bx" を返します。 bx
    =REGEX("axbxcxd"; "(.)x"; "$1y"; 2) この場合、関数は "axbycxd" を返します。 "(.)x" の2番目の一致 (つまり "bx") は、キャプチャされたグループの 1 番目 (つまり "b") とそれに続く "y" に置き換えられます。 axbycxd
    =REGEX("LibreOffice Calc"; "libreoffice") この場合、関数は #N/A を返します。デフォルトでは大文字と小文字が区別されるためです。 #N/A
    =REGEX("LibreOffice Calc"; "(?i)libreoffice") この場合、 関数は一致を検索して "LibreOffice" を返します。検索フラグ (?i) により、大文字と小文字を区別しない一致に切り替わるからです。 LibreOffice

    Related LibreOffice functions:

    None.

    ODF standard:

    None

    Related (or similar) Excel functions:

    None