regexpPattern
説明
は、正規表現に一致するパターンを作成します。pat
= regexpPattern(expression
)
は、1 つ以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば、pat
= regexpPattern(expression
,Name,Value
)'IgnoreCase'
を true
に指定すると、一致時に大文字と小文字の区別を無視できます。
例
パターンと正規表現の組み合わせ
regexpPattern
を使用して、テキスト検索関数の入力として使用できる正規表現を使用したパターンを指定します。
c
で始まり、t
で終わり、その間に 1 文字以上の母音を含む単語を検索します。
txt = "bat cat can car coat court CUT ct CAT-scan"; expression = 'c[aeiou]+t';
正規表現 'c[aeiou]+t'
は次のパターンを指定します。
c
が最初の文字でなければなりません。c
の後には、大かっこ内のいずれかの文字 ([aeiou]
) が続かなければなりません。大かっこ付きのパターンは、
+
演算子の指定により、1 回以上発生しなければなりません。t
が最後の文字でなければならず、大かっこで囲まれたパターンとt
の間に文字が存在してはなりません。
パターンを抽出します。CUT
と CAT
という単語は大文字のため、一致しないことに注意してください。
pat = regexpPattern(expression); extract(txt,pat)
ans = 2x1 string
"cat"
"coat"
regexpPattern
を使用して作成したパターンを他のパターン関数と組み合わせて、より複雑なパターンを作成できます。whitespacePattern
と lettersPattern
を使用して、正規表現一致箇所の後に続く単語にも一致する新しいパターンを作成し、新しいパターンを抽出します。
pat = regexpPattern(expression) + whitespacePattern + lettersPattern; extract(txt,pat)
ans = 2x1 string
"cat can"
"coat court"
newline
文字の無視
newline
文字を含む string を作成します。正規表現 '.'
を使用して、newline
文字以外の任意の文字に一致させます。
txt = "First Line" + newline + "Second Line"
txt = "First Line Second Line"
expression = '.+';
正規表現 '.+'
は、newline
文字を含む、1 つ以上の任意の文字に一致します。パターンが一致した回数をカウントします。
pat = regexpPattern(expression); count(txt,pat)
ans = 1
新しい正規表現パターンを作成します。ただし、今度は、DotExceptNewline
を true
に指定し、パターンが newline
文字に一致しないようにします。パターンが一致した回数をカウントします。
pat = regexpPattern(expression,"DotExceptNewline",true);
count(txt,pat)
ans = 2
一致時に式に含まれる空白を無視
txt
を string として作成します。
txt = "Hello World";
式 '. *'
は、.
と *
の間に空白があるため、個別の文字のみに一致します。正規表現 '. *'
に一致するパターンを作成し、パターンを抽出します。
expression = '. *';
pat = regexpPattern(expression);
extract(txt,pat)
ans = 10x1 string
"H"
"e"
"l"
"l"
"o "
"W"
"o"
"r"
"l"
"d"
新しい正規表現を作成します。ただし、今度は、FreeSpacing
を true
に指定し、正規表現内の空白が無視されるようにします。新しいパターンを抽出します。
pat = regexpPattern(expression,"FreeSpacing",true);
extract(txt,pat)
ans = "Hello World"
正規表現の大文字と小文字の区別を無視
c
で始まり、t
で終わり、その間に 1 文字以上の母音を含む単語を、大文字と小文字を区別せずに検索します。
txt = "bat cat can car coat court CUT ct CAT-scan"; expression = 'c[aeiou]+t';
正規表現 'c[aeiou]+t'
は次のパターンを指定します。
c
が最初の文字でなければなりません。c
の後には、大かっこ内のいずれかの文字 ([aeiou]
) が続かなければなりません。大かっこ付きのパターンは、
+
演算子の指定により、1 回以上発生しなければなりません。t
が最後の文字でなければならず、大かっこで囲まれたパターンとt
の間に文字が存在してはなりません。
パターンを抽出します。単語 CUT と CAT は大文字であるため一致しないことに注意してください。
pat = regexpPattern(expression); extract(txt,pat)
ans = 2x1 string
"cat"
"coat"
新しい正規表現パターンを作成します。ただし、今度は、IgnoreCase
を true
に指定し、正規表現で大文字と小文字の区別が無視されるようにします。新しいパターンを抽出します。
pat = regexpPattern(expression,"IgnoreCase",true);
extract(txt,pat)
ans = 4x1 string
"cat"
"coat"
"CUT"
"CAT"
アンカー ^
および $
を行またはテキスト アンカーに指定
メタ文字 ^
と $
は、行アンカーまたはテキスト アンカーを指定するために使用できます。その regexpPattern
で使用される動作は、Anchors
オプションによって指定されます。
txt
を、newline
文字を含む string として作成します。
txt = "cat" + newline + "bat" + newline + "rat";
正規表現 '^.+?$' は、2 つのアンカーに挟まれた 1 つ以上の文字に一致します。この正規表現のパターンを作成し、Anchors
を “text”
に指定し、アンカー ^ および $ がテキスト アンカーとして扱われるようにします。パターンを抽出します。
expression = '^.+?$'; pat = regexpPattern(expression,"Anchors","text"); extract(txt,pat)
ans = "cat bat rat"
新しい正規表現パターンを作成します。ただし、今度は、Anchors
を “line”
に指定し、アンカー ^ および $ が行アンカーとして扱われるようにします。新しいパターンを抽出します。
pat = regexpPattern(expression,"Anchors","line"); extract(txt,pat)
ans = 3x1 string
"cat"
"bat"
"rat"
入力引数
expression
— 正規表現
文字ベクトル | 文字ベクトルの cell 配列 | string 配列
正規表現。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。各式には、文字、メタ文字、演算子、トークンおよび str
と一致するパターンを指定するフラグを含めることができます。
次の表では、正規表現の要素を説明します。
メタ文字
メタ文字は、文字、文字範囲、桁および空白文字を表します。メタ文字を使用して文字の汎用パターンを構築します。
メタ文字 | 説明 | 例 |
---|---|---|
| 空白を含む任意の単一文字 |
|
| 大かっこ内の任意の文字。次の文字は文字どおり扱われます。 |
|
| 大かっこ内を除く任意の文字。次の文字は文字どおり扱われます。 |
|
|
|
|
| アルファベット、数字またはアンダースコア文字。英語の文字セットでは、 |
|
| アルファベット、数字またはアンダースコア以外の任意の文字。英語の文字セットでは、 |
|
| 任意の空白文字。 |
|
| 任意の空白文字以外の文字。 |
|
| 任意の数字。 |
|
| 任意の数字以外の文字。 |
|
| 8 進数値 |
|
| 16 進数値 |
|
文字表現
演算子 | 説明 |
---|---|
| アラーム (ビープ) |
| バックスペース |
| フォーム フィード |
| 改行 |
| キャリッジ リターン |
| 水平タブ |
| 垂直タブ |
| 文字どおり一致させる正規表現で特殊な意味をもつ任意の文字 (単一のバックスラッシュに一致させるには |
量指定子
量指定子は、一致するテキスト内でパターンが発生しなければならない回数を指定します。expr
は任意の正規表現を表します。
量指定子 | 表現の出現回数 | 例 |
---|---|---|
| 0 回以上の繰り返し。 |
|
| 0 回または 1 回。 |
|
| 1 回以上の繰り返し。 |
|
|
|
|
|
|
|
| 正確に
|
|
量指定子は次の表に示すように、3 つのモードで表示できます。q は前の表の任意の量指定子を表します。
モード | 説明 | 例 |
---|---|---|
| 最長一致表現。できるだけ多くの文字と一致します。 | たとえば、テキスト
|
| 最短一致表現。できるだけ少ない文字と一致します。 | たとえば、テキスト
|
| 独占的表現。できる限り多く一致しますが、テキスト部分の再スキャンは実行しません。 | たとえば、テキスト |
グループ化演算子
グループ化演算子を使用すると、トークンのキャプチャ、1 つの演算子の複数の要素への適用または特定グループ内のバックトラッキングを無効にできます。トークンは正規表現の一部をかっこで囲んで定義した、一致テキストの一部です。
グループ化演算子 | 説明 | 例 |
---|---|---|
| 式の要素をグループ化し、トークンをキャプチャします。 |
|
| グループ化はしますが、トークンはキャプチャしません。 |
グループ化を使用しない場合、 |
| アトミックにグループ化します。一致を検索するためにグループ内のバックトラッキングを実行せず、トークンをキャプチャしません。 |
|
| 式
左小かっこの後に |
|
アンカー
式内のアンカーは、入力テキストまたは単語の最初または最後と一致します。
アンカー | 一致対象 | 例 |
---|---|---|
| 入力テキストの最初。 |
|
| 入力テキストの最後。 |
|
| 単語の最初。 |
|
| 単語の最後。 |
|
前後参照アサーション
前後参照アサーションは、目的の一致の直前または直後のパターン (一致の一部ではない) を検索します。
ポインターは現在の位置のままで、test
式に対応する文字はキャプチャも破棄もされません。このため、前方参照アサーションは、オーバーラップしている文字グループと一致することがあります。
前後参照アサーション | 説明 | 例 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
式の "前に" 前方アサーションを指定する場合、演算は論理 AND
と等価になります。
演算 | 説明 | 例 |
---|---|---|
|
|
|
|
|
|
論理演算子と条件演算子
論理演算子と条件演算子を使用すると、特定の条件の状態をテストし、その結果を使用して次に一致するパターン (ある場合) を決定できます。これらの演算子は論理 OR
および if
または if/else
条件をサポートしています。
条件はトークンの場合もあれば、前方参照演算子または (?@cmd)
という形式の動的表現の場合もあります。動的表現は、論理値または数値を返さなければなりません。
条件演算子 | 説明 | 例 |
---|---|---|
| 式
|
|
| 条件 | Windows® システムで実行する場合、 |
| 条件 |
|
トークン演算子
トークンは正規表現の一部をかっこで囲んで定義した、一致テキストの一部です。テキスト内のシーケンスによってトークンを参照することも (順序トークン)、コードの保守を簡単にしたり、出力を読み取りやすくしたりするために、トークンに名前を割り当てることもできます。
順序トークン演算子 | 説明 | 例 |
---|---|---|
| かっこで囲まれた式と一致する文字をトークンでキャプチャします。 |
|
名前付きトークン演算子 | 説明 | 例 |
---|---|---|
| かっこで囲まれた式と一致する文字を名前付きトークンでキャプチャします。 |
|
メモ
式に入れ子にされたかっこがある場合、MATLAB® は一番外側のかっこのペアに対応するトークンをキャプチャします。たとえば '(and(y|rew))'
という検索パターンの場合、MATLAB は 'andrew'
に対するトークンを作成しますが、'y'
や 'rew'
に対するトークンは作成しません。
コメント
文字 | 説明 | 例 |
---|---|---|
(?#comment) | 正規表現にコメントを挿入します。コメントのテキストは、入力の検索時に無視されます。 |
|
検索フラグ
検索フラグを使用して、一致する式に対する動作を変更します。式内での検索フラグの使用に対する代替案は、option
入力引数を渡すことです。
フラグ | 説明 |
---|---|
(?-i) | 大文字と小文字を区別します。 |
(?i) | 大文字と小文字を区別しません。 |
(?s) | パターン内のドット ( |
(?-s) | パターン内のドットを改行文字以外の任意の文字と一致させます。 |
(?-m) | テキストの始めと終わりで |
(?m) | 行の始めと終わりで |
(?-x) | 検索時に空白文字とコメントを含めます (既定)。 |
(?x) | 検索時に空白文字とコメントを無視します。空白文字と |
フラグによって修正される式は、かっこの後に
(?i)\w*
のように表示されるか、かっこの中に表示でき、次のようにコロン (:
) を使ってフラグから切り離すことができます。
(?i:\w*)
後の構文を使うと、より長い式の一部に対する動作を変更できます。
データ型: char
| cell
| string
メモ
regexpPattern
は、前方参照、前方参照に基づく条件、および動的正規表現をサポートしていません。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: 'DotExceptNewline',true,'FreeSpacing',false
DotExceptNewline
— 改行のドット一致
false
または 0
(既定値) | true
または 1
newline
文字のドット一致。'DotExceptNewline'
と logical スカラーで構成されるコンマ区切りのペアとして指定します。このオプションを 0 (false) に設定すると、newline
文字がドット一致から除外されます。
例: pat = regexpPattern('m.','DotExceptNewline',true)
FreeSpacing
— 空白に一致
false
または 0
(既定値) | true
または 1
空白文字に一致。'FreeSpacing'
と logical スカラーで構成されるコンマ区切りのペアとして指定します。このオプションを 1 (true) に設定すると、一致時に空白文字とコメントが除外されます。
例: pat = regexpPattern('m.','FreeSpacing',false)
IgnoreCase
— 一致時に大文字小文字の区別を無視
false
または 0
(既定値) | true
または 1
一致時に大文字小文字の区別を無視。'IgnoreCase'
と logical スカラーで構成されるコンマ区切りのペアとして指定します。このオプションを 1 (true) に設定すると、大文字と小文字を区別せずに一致します。
例: pat = regexpPattern('m.','IgnoreCase',true)
Anchors
— メタ文字の取り扱い
'text'
(既定値) | 'line'
メタ文字の取り扱い。'Anchors'
と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。
値 | 説明 |
---|---|
'text' | メタ文字 ^ および $ をテキスト アンカーとして扱います。これにより、正規表現の一致は、テキスト (複数行にわたる場合もある) の先頭または末尾にアンカリングされます。 |
'line' | メタ文字 ^ および $ を行アンカーとして扱います。これにより、正規表現の一致は、テキストに含まれる行の先頭または末尾にアンカリングされます。このオプションは、複数行のテキストがあり、複数行にわたる一致を望まない場合に役立ちます。 |
例: pat = regexpPattern('\d+','Anchors','line')
バージョン履歴
R2020b で導入
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)