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 = 4×1 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'
入力引数
更新するテキスト。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。
データ型: char | 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
置換テキスト。文字ベクトル、文字ベクトルの cell 配列または string 配列として次のように指定します。
replaceが単一の文字ベクトル、expressionが文字ベクトルの cell 配列の場合、regexprepは各表現に同じ置換テキストを使用します。replaceがN個の文字ベクトルからなる cell 配列でexpressionが単一の文字ベクトルの場合、regexprepはN個の一致と置換を試みます。replaceとexpressionが両方とも文字ベクトルの cell 配列の場合、同じ数の要素を含んでいなければなりません。regexprepは、expressionの要素とreplaceの一致する要素をそれぞれ組み合わせます。
置換テキストには、次の表に示すように、正規文字、特殊文字 (タブ、改行など) または置換演算子を含めることができます。
置換演算子 | 説明 |
|---|---|
| 入力テキストの現在の一致部分 |
| 入力テキストの現在の一致の前にある部分 |
| 入力テキストの現在の一致の後にある部分 ( |
|
|
| 名前付きトークン |
| MATLAB で |
演算子 | 説明 |
|---|---|
| アラーム (ビープ) |
| バックスペース |
| フォーム フィード |
| 改行 |
| キャリッジ リターン |
| 水平タブ |
| 垂直タブ |
| 文字どおり一致させる正規表現で特殊な意味をもつ任意の文字 (単一のバックスラッシュに一致させるには |
データ型: char | cell | string
検索または置換オプション。次の表に示すように、文字ベクトルまたは整数値として指定します。
オプションはペアになっています。既定の動作に対応するオプションが 1 つ、既定をオーバーライドできるオプションが 1 つまたは 2 つです。セットからオプションを 1 つだけ指定します。オプションの順番は任意です。
| 既定 | オーバーライド | 説明 |
|---|---|---|
|
|
| 式をできるだけ多く一致させて置き換える (既定) か、1 回しか一致させ置き換えないかを指定します。 |
|
|
| |
|
|
| 警告の非表示 (既定) または表示を指定します。 |
|
|
| 一致および置換時に大文字小文字を区別する (既定) か、無視するかを指定します。 |
|
| 一致時に大文字小文字を無視しますが、以下のいずれかの構造に一致する場合は、置換時に元のテキストの対応する文字の大文字と小文字を維持します。
元のテキストが上記のいずれの構造にも一致しない場合、置換テキストはすべて小文字になります。 | |
|
|
| 長さがゼロの一致を無視する (既定) か、含めるかを指定します。 |
|
|
| ドットをなんらかの文字に一致させる (既定) か、改行 ( |
|
|
|
|
|
|
| 検索時に空白文字とコメントを含める (既定) か無視するかを指定します。 |
データ型: char | string
拡張機能
regexprep 関数は tall 配列を完全にサポートしています。詳細については、tall 配列を参照してください。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2006a より前に導入
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)