Разрешить отрицательные целые числа для регулярных выражений в 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');

вместо этого, что позволяет дополнительный знак минус.

Другие вопросы по тегам