Main Content

regexptranslate

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

説明

newStr = regexptranslate(op,str)str を正規表現に変換し、結果を newStr に返します。newStrregexpregexpiregexprep の各関数で正規表現として使用できます。入力引数 opregexptranslate が実行する変換のタイプを指定します。たとえば、op'escape' を指定すると、regexptranslatestr の特殊文字を出力でリテラル文字になるように変換します。newStr のデータ型は str と同じです。

すべて折りたたむ

関数 regexptranslate を使用して、文字ベクトルの特殊文字を変換します。次に、regexp でその結果を正規表現として使用します。

'\n' 文字を含む文字ベクトルを作成します。

chr = 'The sequence \n generates a new line.'
chr = 
'The sequence \n generates a new line.'

'\n''\''n' の連続した 2 文字として検索する正規表現を作成します。関数 regexp'\n' を改行文字として解釈するため、regexptranslate を使用して、'\n' をエスケープする正規表現を作成します。

pattern = regexptranslate('escape','\n')
pattern = 
'\\n'

chr'\n' の開始インデックスを検索します。regexp'\n' を改行として解釈しないようにするには、pattern を正規表現として使用します。

idx = regexp(chr,pattern)
idx = 14

'\n' をエスケープせずに regexp を呼び出します。regexp'\n' を改行として解釈するため、chr のリテラル文字は検索されません。関数 regexp は、一致が見つからない場合は空の配列を返します。

idx = regexp(chr,'\n')
idx =

     []

string を作成します。

str = "Put your money in."
str = 
"Put your money in."

テキスト '$0.02' を、'money' という語と置き換えるテキストとして指定します。'$' 文字と '.' 文字をエスケープするには、regexptranslate を使用します。

r = regexptranslate('escape','$0.02')
r = 
'\$0\.02'

関数 regexprep を使用して 'money' を置き換えます。

newStr = regexprep(str,'money',r)
newStr = 
"Put your $0.02 in."

ファイル名を含む string 配列を作成します。次に、'.mat' で終わるファイル名のみを検索します。

str = ["test1.mat","myfile.mat","my-matlab-script.m", ...
       "jan30.mat","table3.xls"]
str = 1x5 string
    "test1.mat"    "myfile.mat"    "my-matlab-script.m"    "jan30.mat"    "table3.xls"

string を正規表現と一致させるには、'*.mat' を正規表現として指定します。次に、関数 regexptranslate を使用してワイルドカード文字 '*' を変換します。

pattern = regexptranslate('wildcard','*.mat')
pattern = 
'.*\.mat'

pattern で指定した正規表現を使用して、str の一致する要素を検索します。

matches = regexp(str,pattern)
matches=1×5 cell array
    {[1]}    {[1]}    {0x0 double}    {[1]}    {0x0 double}

logical 配列 TF を作成します。str の対応する要素が pattern と一致する要素に 1 が格納されます。その後、TF を使用して str のインデックスを指定し、'.mat' で終了するファイル名を表示します。

tf = ~cellfun('isempty',matches);
newStr = str(tf)
newStr = 1x3 string
    "test1.mat"    "myfile.mat"    "jan30.mat"

空白文字 (スペース文字や改行文字など) で区切られた単語を含む文字ベクトルを作成します。

chr = 'Whose woods these are I think I know.';
chr = [chr newline 'His house is in the village though']
chr = 
    'Whose woods these are I think I know.
     His house is in the village though'

空白文字と一致する正規表現として '\s' を指定します。その後、chr にあるこれらの文字を置き換えます。

expression = '\s';
newChr = regexptranslate('flexible',chr,expression)
newChr = 
'Whose\swoods\sthese\sare\sI\sthink\sI\sknow.\sHis\shouse\sis\sin\sthe\svillage\sthough'

入力引数

すべて折りたたむ

変換のタイプ。文字ベクトルまたは string スカラーとして指定します。次の表のオプションを使用して、特殊文字やワイルドカード文字を変換したり、テキストを一致する正規表現に置き換えることができます。

変換のタイプ

説明

'escape'

str 内のすべての特殊文字 (''$''、''.''、''?''、''['' など) を変換し、regexpregexpiregexprep で使用する場合にリテラル文字として処理できるようにします。この変換により、str の各特殊文字の前にバックスラッシュ (エスケープ文字、'\') を挿入します。

'wildcard'

str 内のすべてのワイルドカードと '.' 文字を変換し、regexpregexpiregexprep で使用するときに、リテラルのワイルドカード文字とピリオドとして処理できるようにします。この変換により、'*' のすべてのインスタンスを '.*' に、'?' のすべてのインスタンスを '.' に、'.' のすべてのインスタンスを '\.' に置き換えます。

'flexible'

str のテキストを、テキストと一致する正規表現に置き換えます。'flexible' を指定する場合、置き換えに使用する正規表現を newStr = regexptranslate('flexible',str,expression) の形式で指定します。expression 入力には文字ベクトルまたは string スカラーを使用できます。

この構文は newStr = regexprep(str,expression,regexptranslate('escape',expression)) と等価です。

入力テキスト。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。

バージョン履歴

R2006a より前に導入