【问题标题】:parsing KEGG information解析KEGG信息
【发布时间】:2015-04-14 14:32:59
【问题描述】:

我想在 Matlab 中索引一个表达式以只返回第一个参数

new_mets{i}=strsplit(mets{j},' (');
ans  = 
'Anteisopentadecanoylcardiolipin'    'B. subtilis)'

像这样:

new_mets{i}=strsplit(mets{j},' (')(1);
ans  = 
'Anteisopentadecanoylcardiolipin'

但我明白了:

Error: ()-indexing must appear last in an index expression

当然我可以先将它保存为变量,然后再索引,但效率低下,肯定有更简单的方法

【问题讨论】:

标签: matlab indexing


【解决方案1】:

您可以使用正则表达式仅获取第一部分:

new_mets{i} = regexp(mets{j}, '^.+(?= \()', 'match');

例子:

>> regexp('aaa (bb)', '^.+(?= \()', 'match')
ans = 
    'aaa'

另一种方法:

ind = strfind(mets{j}, ' ('); %// find starting indices of matches
new_mets{i} = mets{1}(1:ind(1)-1); %// take substring previous to first match

【讨论】:

  • 如果他不想使用临时变量来获得“效率”,我怀疑正则表达式会被接受:)
  • @m.s.是的,我读过正则表达式可能很慢......我不知道,我自己不太使用它们
猜你喜欢
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2011-08-16
  • 2013-09-02
相关资源
最近更新 更多