我在一个大的a.txt文件中解释了我的pb
食物量为1
渴望的旅行是5
我需要在'食物数量'表达之后阅读1并且在'Desired Travel is'表达之后阅读5,再次感谢
答案 0 :(得分:0)
您可以查看this:使用regexpi,您只需在字符串中查找数字。
语法就像这样简单:
startIndex = regexpi(str,expression)
其中expression
参数是正则表达式(即'\ d *'以检索连续数字)。
答案 1 :(得分:0)
在您的特定情况下,使用正则表达式执行此操作的方法是:
首先,您必须确定搜索中哪些字符串有效 例如:
firstpar = 'First parameter is [0-9]+';
表示您正在寻找字符串'第一个参数是'
以数字序列结尾。
然后您可以通过以下方式使用regexp
或regexpi
:
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将其粘贴在他的评论中),向下滚动到输入参数并展开'表达式'。
regexp
和regexpi
之间的区别在于后者不区分大小写。