如果'function'
带有字符串标记,则需要将它们包含在匹配中。此外,您需要转义点(否则,它被认为是“任何字符”)。[.program]+
查找方括号中包含的一个或多个字母 - 但您可以直接查找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 = '自动';
我的目标是找到所有匹配的行, .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));