0

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

食物量为 1

期望的旅行是 5

我需要阅读 'Amount of Food is' 表达之后的 1 和 'Desired Travel is' 表达之后的 5,再次感谢

4

2 回答 2

0

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

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

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

表示您正在寻找以数字序列 结尾的字符串“第一个参数是”

然后你可以使用regexporregexpi以下列方式:

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 文档(alexcasalboni 将其粘贴在他的评论中),向下滚动到 Input Arguments 和扩展“表达式”。

regexp和之间的区别在于regexpi后者不区分大小写。

于 2013-03-29T22:59:24.227 回答
0

你可以看看这个:使用 regexpi 你可以简单地在你的字符串中查找数字。

语法很简单:

startIndex = regexpi(str,expression)

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

于 2013-03-29T20:02:45.133 回答