2015-04-25 2 views
0

Я хочу скопировать некоторую часть строки из массива ячеек и поместить ее в другой массив ячеек в MATLAB.чтение некоторой части строки из массива ячеек в MATLAB

Например, одна структура, как это

{>eco:b0002 thrA; Bifunctional aspartokinase/homoserine dehydrogenase 1 (EC:1.1.1.3 2.7.2.4); K12524 bifunctional aspartokinase/homoserine dehydrogenase 1 [EC:2.7.2.4 1.1.1.3] (N) atgcgagtgttgaa...}, 

Я хочу, чтобы вставить

'>eco:b0002 thrA; Bifunctional aspartokinase/homoserine dehydrogenase 1 (EC:1.1.1.3 2.7.2.4); K12524 bifunctional aspartokinase/homoserine dehydrogenase 1 [EC:2.7.2.4 1.1.1.3] (N)' 

часть со ссылкой строки в другой массив ячеек.

В каждой ячейке он начинается с '>' и заканчивается символом '(N)', как вы видите один из них в примере.

Я не могу найти полезной функции для начала.

ответ

0

Вы хотите использовать regular expression.

Try, например:

> str = "> fooooo (N) bar baz" 
> exp = "^>(.*)\\(N\\).*$" 
> [tokens, matches] = regexp(str, exp, 'tokens', 'match') 
> tokens{1}{1} 
ans => foooooo 

(Отказ от ответственности: я попытался выше в октаву, что должен вести себя точно так же).

+0

У меня ошибка в Matlab (даже с одинарными кавычками вместо двойных qoutes). 'tokens' возвращается как пустой –

+0

К сожалению, у меня нет установки MATLAB, чтобы поэкспериментировать с более тонкими деталями диалекта regexp MATLAB, но я вижу, что это больше не нужно :) –

+0

Я не видел ничего очевидного, чтобы исправить/предложить в вашем ответе, поэтому я написал мой :-) –

1
>> str = '>eco:b0002 thrA; (N) atgcgagtgttgaa...'; 
>> result = regexp(str, '\>.+\(N\)', 'match'); 
>> result = result{1} 
result = 
>eco:b0002 thrA; (N) 
Смежные вопросы