我在一个大的 a.txt 文件中重新解释了我的 pb
食物量为 1
期望的旅行是 5
我需要阅读 'Amount of Food is' 表达之后的 1 和 'Desired Travel is' 表达之后的 5,再次感谢
我在一个大的 a.txt 文件中重新解释了我的 pb
食物量为 1
期望的旅行是 5
我需要阅读 'Amount of Food is' 表达之后的 1 和 'Desired Travel is' 表达之后的 5,再次感谢
在您的特定情况下,使用正则表达式执行此操作的方法是:
首先,您必须确定哪些字符串在您的搜索中是有效的,例如:
firstpar = 'First parameter is [0-9]+';
表示您正在寻找以数字序列
结尾的字符串“第一个参数是”。
然后你可以使用regexp
orregexpi
以下列方式:
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
后者不区分大小写。
你可以看看这个:使用 regexpi 你可以简单地在你的字符串中查找数字。
语法很简单:
startIndex = regexpi(str,expression)
其中expression
参数是一个正则表达式(即 '\d*' 检索连续数字)。