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 = 2×1 string
"cat"
"coat"
regexpPattern を使用して作成したパターンを他のパターン関数と組み合わせて、より複雑なパターンを作成できます。whitespacePattern と lettersPattern を使用して、正規表現一致箇所の後に続く単語にも一致する新しいパターンを作成し、新しいパターンを抽出します。
pat = regexpPattern(expression) + whitespacePattern + lettersPattern; extract(txt,pat)
ans = 2×1 string
"cat can"
"coat court"
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 = 10×1 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 = 2×1 string
"cat"
"coat"
新しい正規表現パターンを作成します。ただし、今度は、IgnoreCase を true に指定し、正規表現で大文字と小文字の区別が無視されるようにします。新しいパターンを抽出します。
pat = regexpPattern(expression,"IgnoreCase",true);
extract(txt,pat)ans = 4×1 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 = 3×1 string
"cat"
"bat"
"rat"
入力引数
正規表現。文字ベクトル、文字ベクトルの 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
newline 文字のドット一致。'DotExceptNewline' と logical スカラーで構成されるコンマ区切りのペアとして指定します。このオプションを 0 (false) に設定すると、newline 文字がドット一致から除外されます。
例: pat = regexpPattern('m.','DotExceptNewline',true)
空白文字に一致。'FreeSpacing' と logical スカラーで構成されるコンマ区切りのペアとして指定します。このオプションを 1 (true) に設定すると、一致時に空白文字とコメントが除外されます。
例: pat = regexpPattern('m.','FreeSpacing',false)
一致時に大文字小文字の区別を無視。'IgnoreCase' と logical スカラーで構成されるコンマ区切りのペアとして指定します。このオプションを 1 (true) に設定すると、大文字と小文字を区別せずに一致します。
例: pat = regexpPattern('m.','IgnoreCase',true)
メタ文字の取り扱い。'Anchors' と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。
| 値 | 説明 |
|---|---|
'text' | メタ文字 ^ および $ をテキスト アンカーとして扱います。これにより、正規表現の一致は、テキスト (複数行にわたる場合もある) の先頭または末尾にアンカリングされます。 |
'line' | メタ文字 ^ および $ を行アンカーとして扱います。これにより、正規表現の一致は、テキストに含まれる行の先頭または末尾にアンカリングされます。このオプションは、複数行のテキストがあり、複数行にわたる一致を望まない場合に役立ちます。 |
例: pat = regexpPattern('\d+','Anchors','line')
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。
バージョン履歴
R2020b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)