在MATLAB中允许正则表达式的负整数

Jei*_*man 1 regex matlab integer negative-number

MATLAB中的正则表达式是否为负整数,例如"-1".由于此错误"Index exceeds matrix dimensions.",我的代码似乎运行不正常,我知道它与我的数据文件中的负值有关.它在工作区窗口中显示负整数.

关于如何在正则表达式中允许负整数的任何想法

这是代码:

       m = regexp(value, 'START=(\d+)', 'tokens');
       m2 = regexp(value, 'STOP=(\d+)', 'tokens');

       start = cell2mat(m{1});
       stop = cell2mat(m2{1});


       % Print result
       fprintf(fout, 'INSERT INTO cath_domains (pdbcode, cathbegin, cathend) VALUES("%s", %s, %s)\n', domain, start, stop);
Run Code Online (Sandbox Code Playgroud)

Jon*_*nas 5

令牌(\d+)只返回数字,而不是减号等字符.因此,如果存在减号,则没有匹配,m和/或m2为空,因此当您尝试索引到单元格数组时会出现错误.

尝试

m = regexp(value, 'START=(-?\d+)', 'tokens');
Run Code Online (Sandbox Code Playgroud)

相反,它允许一个可选的减号.