regexptranslate
テキストを正規表現に変換
説明
例
特殊文字の変換
関数 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'
入力引数
op
— 変換のタイプ
'escape'
| 'wildcard'
| 'flexible'
変換のタイプ。文字ベクトルまたは string スカラーとして指定します。次の表のオプションを使用して、特殊文字やワイルドカード文字を変換したり、テキストを一致する正規表現に置き換えることができます。
変換のタイプ | 説明 |
---|---|
|
|
|
|
|
この構文は |
str
— 入力テキスト
文字ベクトル | 文字ベクトルの cell 配列 | string 配列
入力テキスト。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。
バージョン履歴
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)