Разрешить отрицательные целые числа для регулярных выражений в MATLAB
Принимает ли регулярное выражение в 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);
1 ответ
Решение
Знак (\d+)
будет возвращать только цифры, а не символы, такие как знак минус. Таким образом, если есть знак минус, нет совпадения, m
и / или m2
пустые, и, таким образом, вы получаете сообщение об ошибке при попытке индексации в массивах ячеек.
Пытаться
m = regexp(value, 'START=(-?\d+)', 'tokens');
вместо этого, что позволяет дополнительный знак минус.