regexpi
正規表現 (大文字小文字を区別しない) の一致
構文
説明
は、大文字小文字にかかわらず、正規表現で指定した文字パターンと一致する startIndex
= regexpi(str
,expression
)str
の各部分文字列の開始インデックスを返します。一致要素がない場合、startIndex
は空配列になります。
[
は、一致するすべての開始インデックスと終了インデックスを返します。startIndex
,endIndex
] = regexpi(str
,expression
)
は、out
= regexpi(str
,expression
,outkey
)outkey
で指定された出力を返します。たとえば、outkey
が 'match'
の場合、regexpi
は開始インデックスではなく、式と一致する部分文字列を返します。
___ = regexpi(___,'forceCellOutput')
は、各出力引数をスカラー cell として返します。セルには前述の構文の出力として表される数値配列または部分文字列が含まれます。任意の入力を含めたり、前述の構文から任意の出力を要求することができます。
例
パターン一致
c
で始まり、t
で終わり、その間に少なくとも 1 文字以上の母音を含む単語を検索します。
str = 'bat cat can car COAT court cut ct CAT-scan'; expression = 'c[aeiou]+t'; startIndex = regexpi(str,expression)
startIndex = 1×4
5 17 28 35
startIndex
の値は、正規表現と一致する各単語の最初の文字のインデックスを示しています。
正規表現 'c[aeiou]+t'
は次のパターンを指定します。
c
が最初の文字でなければなりません。c
の後には、大かっこ内のいずれかの文字 ([aeiou]
) が続かなければなりません。大かっこ付きのパターンは、
+
演算子の指定により、1 回以上発生しなければなりません。t
が最後の文字でなければならず、大かっこで囲まれたパターンとt
の間に文字が存在してはなりません。
大文字小文字を区別する一致
式の全部または一部で、大文字と小文字を区別して一致を検索します。
既定では、regexpi
は大文字小文字を区別しない一致を実行します。
str = 'A character vector with UPPERCASE and lowercase text.'; expression = '\w*case'; matchStr = regexpi(str,expression,'match')
matchStr = 1x2 cell
{'UPPERCASE'} {'lowercase'}
関数 regexp
は regexpi
と同じ構文を使用して、大文字小文字を区別する一致を実行します。
matchWithRegexp = regexp(str,expression,'match')
matchWithRegexp = 1x1 cell array
{'lowercase'}
regexp
に対して大文字小文字を区別する一致を無効にするには、'ignorecase'
オプションを使用します。
matchWithIgnorecase = regexp(str,expression,'match','ignorecase')
matchWithIgnorecase = 1x2 cell
{'UPPERCASE'} {'lowercase'}
複数の式の場合は、(?i)
および (?-i)
の検索フラグを使って、選択した表現の大文字小文字を区別する一致の有効と無効を切り替えます。
expression = {'(?-i)\w*case';... '(?i)\w*case'}; matchStr = regexp(str,expression,'match'); celldisp(matchStr)
matchStr{1}{1} = lowercase matchStr{2}{1} = UPPERCASE matchStr{2}{2} = lowercase
入力引数
str
— 入力テキスト
文字ベクトル | 文字ベクトルの cell 配列 | string 配列
入力テキスト。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。cell 配列の各文字ベクトルまたは string 配列の各 string は、任意の長さで任意の文字を含めることができます。
str
と expression
が string 配列または cell 配列の場合、これらの次元は同じでなければなりません。
データ型: string
| char
| cell
expression
— 正規表現
文字ベクトル | 文字ベクトルの cell 配列 | string 配列
正規表現。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。各式には、文字、メタ文字、演算子、トークンおよび str
と一致するパターンを指定するフラグを含めることができます。
次の表では、正規表現の要素を説明します。
メタ文字
メタ文字は、文字、文字範囲、桁および空白文字を表します。メタ文字を使用して文字の汎用パターンを構築します。
メタ文字 | 説明 | 例 |
---|---|---|
| 空白を含む任意の単一文字 |
|
| 大かっこ内の任意の文字。次の文字は文字どおり扱われます。 |
|
| 大かっこ内を除く任意の文字。次の文字は文字どおり扱われます。 |
|
|
|
|
| アルファベット、数字またはアンダースコア文字。英語の文字セットでは、 |
|
| アルファベット、数字またはアンダースコア以外の任意の文字。英語の文字セットでは、 |
|
| 任意の空白文字。 |
|
| 任意の空白文字以外の文字。 |
|
| 任意の数字。 |
|
| 任意の数字以外の文字。 |
|
| 8 進数値 |
|
| 16 進数値 |
|
文字表現
演算子 | 説明 |
---|---|
| アラーム (ビープ) |
| バックスペース |
| フォーム フィード |
| 改行 |
| キャリッジ リターン |
| 水平タブ |
| 垂直タブ |
| 文字どおり一致させる正規表現で特殊な意味をもつ任意の文字 (単一のバックスラッシュに一致させるには |
量指定子
量指定子は、一致するテキスト内でパターンが発生しなければならない回数を指定します。
量指定子 | 表現の出現回数 | 例 |
---|---|---|
| 0 回以上の繰り返し。 |
|
| 0 回または 1 回。 |
|
| 1 回以上の繰り返し。 |
|
|
|
|
|
|
|
| 正確に
|
|
量指定子は次の表に示すように、3 つのモードで表示できます。q は前の表の任意の量指定子を表します。
モード | 説明 | 例 |
---|---|---|
| 最長一致表現。できるだけ多くの文字と一致します。 | たとえば、テキスト
|
| 最短一致表現。できるだけ少ない文字と一致します。 | たとえば、テキスト
|
| 独占的表現。できる限り多く一致しますが、テキスト部分の再スキャンは実行しません。 | たとえば、テキスト |
グループ化演算子
グループ化演算子を使用すると、トークンのキャプチャ、1 つの演算子の複数の要素への適用または特定グループ内のバックトラッキングを無効にできます。
グループ化演算子 | 説明 | 例 |
---|---|---|
| 式の要素をグループ化し、トークンをキャプチャします。 |
|
| グループ化はしますが、トークンはキャプチャしません。 |
グループ化を使用しない場合、 |
| アトミックにグループ化します。一致を検索するためにグループ内のバックトラッキングを実行せず、トークンをキャプチャしません。 |
|
| 式
左小かっこの後に |
|
アンカー
式内のアンカーは、入力テキストまたは単語の最初または最後と一致します。
アンカー | 一致対象 | 例 |
---|---|---|
| 入力テキストの最初。 |
|
| 入力テキストの最後。 |
|
| 単語の最初。 |
|
| 単語の最後。 |
|
前後参照アサーション
前後参照アサーションは、目的の一致の直前または直後のパターン (一致の一部ではない) を検索します。
ポインターは現在の位置のままで、test
式に対応する文字はキャプチャも破棄もされません。このため、前方参照アサーションは、オーバーラップしている文字グループと一致することがあります。
前後参照アサーション | 説明 | 例 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
式の "前に" 前方アサーションを指定する場合、演算は論理 AND
と等価になります。
演算 | 説明 | 例 |
---|---|---|
|
|
|
|
|
|
論理演算子と条件演算子
論理演算子と条件演算子を使用すると、特定の条件の状態をテストし、その結果を使用して次に一致するパターン (ある場合) を決定できます。これらの演算子は論理 OR
および if
または if/else
条件をサポートしています。
条件はトークンの場合もあれば、前方参照演算子または (?@cmd)
という形式の動的表現の場合もあります。動的表現は、論理値または数値を返さなければなりません。
条件演算子 | 説明 | 例 |
---|---|---|
| 式
|
|
| 条件 | Windows® システムで実行する場合、 |
| 条件 |
|
トークン演算子
トークンは正規表現の一部をかっこで囲んで定義した、一致テキストの一部です。テキスト内のシーケンスによってトークンを参照することも (順序トークン)、コードの保守を簡単にしたり、出力を読み取りやすくしたりするために、トークンに名前を割り当てることもできます。
順序トークン演算子 | 説明 | 例 |
---|---|---|
| かっこで囲まれた式と一致する文字をトークンでキャプチャします。 |
|
|
|
|
|
|
|
名前付きトークン演算子 | 説明 | 例 |
---|---|---|
| かっこで囲まれた式と一致する文字を名前付きトークンでキャプチャします。 |
|
|
|
|
| 名前付きトークンが見つかった場合は |
|
メモ
式に入れ子にされたかっこがある場合、MATLAB® は一番外側のかっこのペアに対応するトークンをキャプチャします。たとえば '(and(y|rew))'
という検索パターンの場合、MATLAB は 'andrew'
に対するトークンを作成しますが、'y'
や 'rew'
に対するトークンは作成しません。
動的正規表現
動的表現を使用すると、MATLAB コマンドまたは正規表現を実行して一致するテキストを特定できます。
動的表現を囲む小かっこでは、キャプチャするグループを "作成しません"。
演算子 | 説明 | 例 |
---|---|---|
|
解析時、 |
|
|
|
|
|
|
|
動的表現内では、次の演算子を使用して置換テキストを定義します。
置換演算子 | 説明 |
---|---|
| 入力テキストの現在の一致部分 |
| 入力テキストの現在の一致の前にある部分 |
| 入力テキストの現在の一致の後にある部分 ( |
|
|
| 名前付きトークン |
| MATLAB で |
コメント
文字 | 説明 | 例 |
---|---|---|
(?#comment) | 正規表現にコメントを挿入します。コメントのテキストは、入力の検索時に無視されます。 |
|
検索フラグ
検索フラグを使用して、一致する式に対する動作を変更します。式内での検索フラグの使用に対する代替案は、option
入力引数を渡すことです。
フラグ | 説明 |
---|---|
(?-i) | 大文字と小文字を区別します。 |
(?i) | 大文字と小文字を区別しません。 |
(?s) | パターン内のドット ( |
(?-s) | パターン内のドットを改行文字以外の任意の文字と一致させます。 |
(?-m) | テキストの始めと終わりで |
(?m) | 行の始めと終わりで |
(?-x) | 検索時に空白文字とコメントを含めます (既定)。 |
(?x) | 検索時に空白文字とコメントを無視します。空白文字と |
フラグによって修正される式は、かっこの後に
(?i)\w*
のように表示されるか、かっこの中に表示でき、次のようにコロン (:
) を使ってフラグから切り離すことができます。
(?i:\w*)
後の構文を使うと、より長い式の一部に対する動作を変更できます。
データ型: char
| cell
| string
outkey
— どの出力を返すかを示すキーワード
'start'
(既定値) | 'end'
| 'tokenExtents'
| 'match'
| 'tokens'
| 'names'
| 'split'
どの出力を返すかを示すキーワード。次の文字ベクトルのいずれかとして指定します。
出力キーワード | 戻り値 |
---|---|
| すべての一致の開始インデックス ( |
| すべての一致の終了インデックス ( |
| すべてのトークンの開始インデックスと終了インデックス |
|
|
|
|
| 各名前付きトークンの名前とテキスト |
|
|
データ型: char
| string
option
— 検索オプション
'once'
| 'warnings'
| 'matchcase'
| 'emptymatch'
| 'dotexceptnewline'
| 'lineanchors'
| ...
検索オプション。文字ベクトルとして指定します。オプションはペアになっています。既定の動作に対応するオプションが 1 つ、既定をオーバーライドできるオプションが 1 つです。ペアからオプションを 1 つだけ指定します。オプションの順番は任意です。
既定 | オーバーライド | 説明 |
---|---|---|
|
| 式をできるだけ多く一致させる (既定) か、1 回しか一致させないかを指定します。 |
|
| 警告の非表示 (既定) または表示を指定します。 |
|
| 大文字小文字を無視する (既定) か、大文字小文字を有効にするかを指定します。 |
|
| 長さがゼロの一致を無視する (既定) か、含めるかを指定します。 |
|
| ドットをなんらかの文字に一致させる (既定) か、改行 ( |
|
|
|
|
| 検索時に空白文字とコメントを含める (既定) か無視するかを指定します。 |
データ型: char
出力引数
startIndex
— 各一致の開始インデックス
行ベクトル | 行ベクトルの cell 配列
各一致の開始インデックス。次のように行ベクトルまたは cell 配列として返されます。
str
とexpression
が両方とも文字ベクトルまたは string スカラーの場合、出力は行ベクトルになります。一致がない場合は空の配列になります。str
またはexpression
の一方が文字ベクトルの cell 配列または string 配列で、他方が文字ベクトルまたは string スカラーの場合、出力は行ベクトルの cell 配列になります。出力 cell 配列の次元は、入力配列の次元と同じです。str
とexpression
が両方とも cell 配列または string 配列の場合、これらの次元は同じでなければなりません。出力は同じ次元の cell 配列になります。
endIndex
— 各一致の終了インデックス
行ベクトル | 行ベクトルの cell 配列
各一致の終了インデックス。次のように行ベクトルまたは cell 配列として返されます。
str
とexpression
が両方とも文字ベクトルまたは string スカラーの場合、出力は行ベクトルになります。一致がない場合は空の配列になります。str
またはexpression
の一方が文字ベクトルの cell 配列または string 配列で、他方が文字ベクトルまたは string スカラーの場合、出力は行ベクトルの cell 配列になります。出力 cell 配列の次元は、入力配列の次元と同じです。str
とexpression
が両方とも cell 配列または string 配列の場合、これらの次元は同じでなければなりません。出力は同じ次元の cell 配列になります。
out
— 一致に関する情報
数値配列 | cell 配列 | string 配列 | 構造体配列
一致に関する情報。数値、セル、string または構造体配列として返されます。出力の情報は、次のように outkey
に対して指定した値によって決まります。
出力キーワード | 出力の説明 | 出力のタイプと次元 |
---|---|---|
| 一致の開始インデックス |
|
| 一致の終了インデックス | |
| すべてのトークンの開始インデックスと終了インデックス | 既定ですべての一致が返される場合:
1 つの一致しか返さない 特定のインデックス |
|
| 既定ですべての一致が返される場合:
|
|
| 既定ですべての一致が返される場合:
一致を 1 つのみ返す 特定のインデックスで予測されるトークンが見つからない場合、MATLAB はそのトークンに対して空の値、文字ベクトルに対して |
| 各名前付きトークンの名前とテキスト | すべての一致に対して:
|
|
| すべての一致に対して:
|
詳細
トークン
トークンは、正規表現に部分的に対応する一致テキストの一部です。トークンを作成するには、正規表現の部分をかっこで囲みます。
たとえば、次の表現は日、月、年のトークンを含め、dd-mmm-yyyy
という形式の日付を検出します。
str = 'Here is a date: 01-Apr-2020'; expression = '(\d+)-(\w+)-(\d+)'; mydate = regexp(str,expression,'tokens'); mydate{:}
ans = 1×3 cell array {'01'} {'Apr'} {'2020'}
簡単に識別できるように、トークンに名前を関連付けることができます。
str = 'Here is a date: 01-Apr-2020'; expression = '(?<day>\d+)-(?<month>\w+)-(?<year>\d+)'; mydate = regexp(str,expression,'names')
mydate = struct with fields: day: '01' month: 'Apr' year: '2020'
詳細については、正規表現におけるトークンを参照してください。
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)