ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

regexptranslate

テキストを正規表現に変換

構文

s2 = regexptranslate(type, s1)

説明

s2 = regexptranslate(type, s1)s1 を、関数 regexp のような MATLAB® 正規表現関数に入力可能な正規表現 s2 に変換します。入力 type は、実行する変換のタイプを定義し、以下のオプションのいずれかになります。詳細は、『MATLAB プログラミングの基礎』ドキュメンテーションの「正規表現」を参照してください。

変換のタイプ

説明

'escape'

s1 内のすべての特殊文字 ('$'、'.'、'?'、'[' など) を変換し、関数 regexp と関数 regexprep で特殊文字を使用するときに、リテラル文字として処理できるようにします。変換を行うと、s1 内の各特殊文字の前にエスケープ文字 ('¥') を挿入します。新しい正規表現を s2 に返します。

'wildcard'

s1 内のすべてのワイルドカードと '.' 文字を変換し、関数 regexp と関数 regexprep でワイルドカードと '.' 文字を使用するときに、リテラルのワイルドカードとピリオドとして処理できるようにします。変換を行うと、'*' のすべてのインスタンスを '.*' に、'?' のすべてのインスタンスを '.' に、'.' のすべてのインスタンスを '\.' に置き換えます。新しい正規表現を s2 に返します。

例 1 — 'escape' オプションの使用

regexp は '\n' のシーケンスを改行文字として解釈するため、この文字ベクトル内で '\' と 'n' の連続する 2 文字を検出できません。

str = 'The sequence \n generates a new line';
pat = '\n';

regexp(str, pat)

ans =

     []

regexpexpr を文字 '¥' と 'n' として解釈するように、はじめに関数 regexptranslate を使用して expr を変換します。

pat2 = regexptranslate('escape', pat)

pat2 =

\\n

regexp(str, pat2)

ans =

    14

例 2 — 置換テキスト内で 'escape' を使用

文字 '$1' をトークン指定子として扱い、以下の文字ベクトルの語句 'walk' を 'ascend' に置き換えます。

str = 'I walk up, they walked up, we are walking up.';
pat = 'walk(\w*) up';

regexprep(str, pat, 'ascend$1')

ans =

I ascend, they ascended, we are ascending.

同じ文字ベクトルで他の置換を行います。この場合、$1' をリテラル文字として処理します。

regexprep(str, pat, regexptranslate('escape', 'ascend$1'))

ans =

I ascend$1, they ascend$1, we are ascend$1.

例 3 — 'wildcard' オプションの使用

以下のファイル名からなる文字ベクトルを指定して、MAT ファイルだけを抽出します。正規表現識別子の代わりに、'*' ワイルドカードを '\w+' として解釈するため、関数 regexptranslate を使用します。

files = ['test1.mat, myfile.mat, newfile.txt, ' ...
         'jan30.mat, table3.xls'];
regexp(files, regexptranslate('wildcard', '*.mat'), 'match')

ans = 

    'test1.mat, myfile.mat, newfile.txt, jan30.mat'

変換を参照するには、以下のように入力します。

regexptranslate('wildcard','*.mat')

ans =

.*\.mat

R2006a で導入

この情報は役に立ちましたか?