在matlab中创建一个单元格数组

时间:2013-12-04 20:36:53

标签: regex arrays matlab twitter cell

我有一个推文文件,我已经使用dataread读入了matlab,我将每行存储到一个30x1的单元格中。我想知道是否有一个拿出每个#标签并将它们存储在自己的单元格中然后找到标签的平均长度?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我认为,您的regexp电话有正确的想法。我将澄清一些事情。如果你想要推文中每个主题标签中的文字,你可以使用正则表达式搜索英镑符号(#)并包括之后的每个字符,直到你到达单词的结尾,例如。

text = '#this #is a #test';
regexpi(lines,'\<#[a-z0-9_]*\>','match');
ans = 
    '#this'    '#is'    '#test'

其中regexpi是不区分大小写的正则表达式,正则表达式搜索“#”后跟任意数量的字母,数字或下划线(我相信是有效的#标签字符)。 'match'标志使regexp函数返回实际匹配。

如果您不想在最终文本中使用实际的主题标签,则可以使用正则表达式后台仅返回文本。例如:

regexpi(lines,'\<(?<=#)[a-z0-9_]*\>','match')
ans = 
    'this'    'is'    'test'

我认为,从技术上讲,标签必须以字母开头,因此这个正则表达式会返回可能无效的主题标签。不过要解决这个问题并不困难。