文字列マーカーが付属している場合'function'
は、これらを一致に含める必要があります。また、ドットをエスケープする必要があります (そうしないと、「任意の文字」と見なされます)。[.program]+
角括弧に含まれる 1 つまたは複数の文字を検索しますが、代わりに検索することもできますprogram
。また、 - 記号をエスケープする必要はありません=
(これがおそらくマッチを混乱させた原因です)。
cst = {'hello.program=''function''';'bye.program=''script'''; };
pat = 'hello\.program=''function''';
out = regexp(cst,pat,'match');
out{1}{1} %# first string from list, first match
hello.program='function'
編集
コメントに応えて
私のファイルには
m2 = S.パラメータ;
m2.Value = matlabstandard;
m2.Volatility = '調整可能';
m2.Configurability = 'なし';
m2.ReferenceInterfaceFile ='';
m2.DataType = 'auto';
私の目的は、一致するすべての行を見つけることです.DataType = 'auto'
正規表現で一致する行を見つける方法は次のとおりです
%# read the file with textscan into a variable txt
fid = fopen('myFile.m');
txt = textscan(fid,'%s');
fclose(fid);
txt = txt{1};
%# find the match. Allow spaces and equal signs between DataType and 'auto'
match = regexp(txt,'\.DataType[ =]+''auto''','match')
%# match is not empty only if a match was found. Identify the non-empty match
matchedLine = find(~cellfun(@isempty,match));