このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
regexprep
正規表現を使用したテキストの置換
構文
説明
は、newStr
= regexprep(str
,expression
,replace
)replace
で記述されたテキストで、expression
と一致する str
内のテキストを置き換えます。関数 regexprep
は newStr
に更新されたテキストを返します。
str
が 1 つのテキスト (文字ベクトルまたは string スカラー) である場合、newStr
も同じ型の 1 つのテキストとなります。newStr
はexpression
またはreplace
が文字ベクトルの cell 配列または string 配列であったとしても 1 つのテキストとなります。expression
が cell 配列または string 配列の場合、regexprep
は最初の表現をstr
に適用してから、後続の各表現を前の結果に適用します。str
が cell 配列または string 配列の場合、newStr
はstr
と同じ次元の cell 配列または string 配列です。str
の各要素に対して、regexprep
関数は各表現を順に適用します。expression
との一致が検出されない場合、newStr
はstr
と等価になります。
例
テキストを更新
M
で始まり、y
で終わり、その間に少なくとも 1 文字が存在する単語を置き換えます。
str = 'My flowers may bloom in May'; expression = 'M(\w+)y'; replace = 'April'; newStr = regexprep(str,expression,replace)
newStr = 'My flowers may bloom in April'
置換テキストにトークンを含める
'walk'
に続く文字をトークンにキャプチャすることで、語句 'walk up'
の変化形を置き換えます。
str = 'I walk up, they walked up, we are walking up.'; expression = 'walk(\w*) up'; replace = 'ascend$1'; newStr = regexprep(str,expression,replace)
newStr = 'I ascend, they ascended, we are ascending.'
置換テキストに動的表現を含める
関数 upper
を使用して、文の先頭の小文字を同等の大文字に置き換えます。
str = 'here are two sentences. neither is capitalized.'; expression = '(^|\.)\s*.'; replace = '${upper($0)}'; newStr = regexprep(str,expression,replace)
newStr = 'Here are two sentences. Neither is capitalized.'
この正規表現は、文字ベクトル (^)
の先頭の後に続く単一文字 (.
) またはピリオド ((\.)
) および任意の空白文字 ((\s*)
) と一致します。式 replace
は、現在一致する文字 ($0
) に対して upper
関数を呼び出します。
複数のテキストを更新
一連の文字ベクトル内に出現する重複文字をすべて記号 '--'
に置き換えます。
str = { ... 'Whose woods these are I think I know.' ; ... 'His house is in the village though;' ; ... 'He will not see me stopping here' ; ... 'To watch his woods fill up with snow.'}; expression = '(.)\1'; replace = '--'; newStr = regexprep(str,expression,replace)
newStr = 4x1 cell
{'Whose w--ds these are I think I know.'}
{'His house is in the vi--age though;' }
{'He wi-- not s-- me sto--ing here' }
{'To watch his w--ds fi-- up with snow.'}
元のテキストの大文字小文字を維持
一致の検索時に正規表現の大文字と小文字を無視しますが、更新時に元のテキストの大文字小文字を維持します。
str = 'My flowers may bloom in May'; expression = 'M(\w+)y'; replace = 'April'; newStr = regexprep(str,expression,replace,'preservecase')
newStr = 'My flowers april bloom in April'
長さがゼロの一致を置換
'^'
演算子を使用して、文字ベクトルの先頭にテキストを挿入します。これにより、長さがゼロの一致とキーワード 'emptymatch'
が返されます。
str = 'abc'; expression = '^'; replace = '__'; newStr = regexprep(str,expression,replace,'emptymatch')
newStr = '__abc'
入力引数
str
— 更新するテキスト
文字ベクトル | 文字ベクトルの cell 配列 | string 配列
更新するテキスト。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。
データ型: char
| cell
| string
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
replace
— 置換テキスト
文字ベクトル | 文字ベクトルの cell 配列 | string 配列
置換テキスト。文字ベクトル、文字ベクトルの cell 配列または string 配列として次のように指定します。
replace
が単一の文字ベクトル、expression
が文字ベクトルの cell 配列の場合、regexprep
は各表現に同じ置換テキストを使用します。replace
がN
個の文字ベクトルからなる cell 配列でexpression
が単一の文字ベクトルの場合、regexprep
はN
個の一致と置換を試みます。replace
とexpression
が両方とも文字ベクトルの cell 配列の場合、同じ数の要素を含んでいなければなりません。regexprep
は、expression
の要素とreplace
の一致する要素をそれぞれ組み合わせます。
置換テキストには、次の表に示すように、正規文字、特殊文字 (タブ、改行など) または置換演算子を含めることができます。
置換演算子 | 説明 |
---|---|
| 入力テキストの現在の一致部分 |
| 入力テキストの現在の一致の前にある部分 |
| 入力テキストの現在の一致の後にある部分 ( |
|
|
| 名前付きトークン |
| MATLAB で |
演算子 | 説明 |
---|---|
| アラーム (ビープ) |
| バックスペース |
| フォーム フィード |
| 改行 |
| キャリッジ リターン |
| 水平タブ |
| 垂直タブ |
| 文字どおり一致させる正規表現で特殊な意味をもつ任意の文字 (単一のバックスラッシュに一致させるには |
データ型: char
| cell
| string
option
— 検索または置換オプション
'once'
| N
| 'warnings'
| 'ignorecase'
| 'preservecase'
| 'emptymatch'
| 'dotexceptnewline'
| 'lineanchors'
| ...
検索または置換オプション。次の表に示すように、文字ベクトルまたは整数値として指定します。
オプションはペアになっています。既定の動作に対応するオプションが 1 つ、既定をオーバーライドできるオプションが 1 つまたは 2 つです。セットからオプションを 1 つだけ指定します。オプションの順番は任意です。
既定 | オーバーライド | 説明 |
---|---|---|
|
| 式をできるだけ多く一致させて置き換える (既定) か、1 回しか一致させ置き換えないかを指定します。 |
|
| |
|
| 警告の非表示 (既定) または表示を指定します。 |
|
| 一致および置換時に大文字小文字を区別する (既定) か、無視するかを指定します。 |
| 一致時に大文字小文字を無視しますが、以下のいずれかの構造に一致する場合は、置換時に元のテキストの対応する文字の大文字と小文字を維持します。
元のテキストが上記のいずれの構造にも一致しない場合、置換テキストはすべて小文字になります。 | |
|
| 長さがゼロの一致を無視する (既定) か、含めるかを指定します。 |
|
| ドットをなんらかの文字に一致させる (既定) か、改行 ( |
|
|
|
|
| 検索時に空白文字とコメントを含める (既定) か無視するかを指定します。 |
データ型: char
| string
出力引数
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は tall 配列を完全にサポートしています。詳細については、tall 配列を参照してください。
スレッドベースの環境
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)