Разрешить отрицательные целые числа для регулярных выражений в MATLAB - PullRequest
1 голос
/ 04 января 2012

Регулярные выражения в 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 Ответ

5 голосов
/ 04 января 2012

Токен (\d+) будет возвращать только цифры, а не такие символы, как знак минус.Таким образом, если есть знак минус, совпадения нет, m и / или m2 пусты, и, таким образом, вы получаете сообщение об ошибке при попытке индексации в массивах ячеек.

Попробуйте вместо этого

m = regexp(value, 'START=(-?\d+)', 'tokens');

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...