通过matlab读取文本文件中特定字符串后面的数字

时间:2013-03-29 19:35:01

标签: matlab

我在一个大的a.txt文件中解释了我的pb

食物量为1

渴望的旅行是5

我需要在'食物数量'表达之后阅读1并且在'Desired Travel is'表达之后阅读5,再次感谢

2 个答案:

答案 0 :(得分:0)

您可以查看this:使用regexpi,您只需在字符串中查找数字。

语法就像这样简单:

startIndex = regexpi(str,expression)

其中expression参数是正则表达式(即'\ d *'以检索连续数字)。

答案 1 :(得分:0)

在您的特定情况下,使用正则表达式执行此操作的方法是:

首先,您必须确定搜索中哪些字符串有效 例如:

firstpar = 'First parameter is [0-9]+';

表示您正在寻找字符串'第一个参数是'
数字序列结尾。

然后您可以通过以下方式使用regexpregexpi

results = regexp(mystring, firstpar, 'match');

mystring是您执行搜索的文本,'match'表示您希望文本的一部分作为输出,而不是索引。

现在,results是一个单元格矩阵,每个单元格都包含一个出现在文本中的字符串,并且符合firstpar定义。为了从字符串的单元格矩阵中仅提取数字,您可以再次使用regexp,但现在可以使用cellfun来帮助自己,它会将您的命令迭代地应用于单元格矩阵的所有单元格:

numbers = cellfun(@(x) str2num(regexp(x, '[0-9]+', 'match', 'once')), results);

numbers是您正在寻找的数字数组。

你可以对不同的字符串模式做同样的事情 - 如果你想要一个更通用的字符串定义(而不是我们在这里使用的直截了当的firstpar),请阅读matlab documentation about regular expressions(alexcasalboni将其粘贴在他的评论中),向下滚动到输入参数并展开'表达式'。

regexpregexpi之间的区别在于后者不区分大小写。