如何通过Matlab中的正则表达式查找和替换子字符串

时间:2014-06-05 15:31:04

标签: regex matlab

我正在使用Matlabs正则表达式函数regexprep()来查找和替换.c文件中的字符串 我一直在尝试在.c文件中使用以下字符串:

var[12] = powmacro(var[11],"name11",var[25],"name25");

var[13] = divmacro(var[23],"name23",var[12],"name12");

...并将它们转换为以下格式:

var[12] = var[11]^var[25]

var[13] = var[23]/var[12]

关于我如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

以下是一个示例代码:

% regular expression patterns
re_sp = '\s*';
re_str = [re_sp '"[^"]*"' re_sp];
re_var = [re_sp '(var\[\d+\])' re_sp];
re_pow = [re_var '=' re_sp 'powmacro' re_sp '\(' ...
    re_var ',' re_str ',' re_var ',' re_str ')' re_sp ';'];
re_div = [re_var '=' re_sp 'divmacro' re_sp '\(' ...
    re_var ',' re_str ',' re_var ',' re_str ')' re_sp ';'];

% replace patterns in strings
str = {'var[12] = powmacro(var[11],"name11",var[25],"name25");' ;
    'var[13] = divmacro(var[23],"name23",var[12],"name12");'};
str = regexprep(str, re_pow, '$1 = $2 ^ $3');
str = regexprep(str, re_div, '$1 = $2 / $3');
disp(str)

结果:

>> str
str = 
    'var[12] = var[11] ^ var[25]'
    'var[13] = var[23] / var[12]'