我正在使用以下基于行的输入来解析ASCII文本文件:
fid = fopen("myFileName", "r"); % open data file
fgetl(fid); % get header variables
对于文件的下一行,我想对其进行解析,并在存在一个或多个空格(即'\ s +')的地方拆分该行。较新版本的Octave为'split'
内置命令提供了regexp
选项。但是,我使用的Octave版本是3.4.3,目前我还不能升级到任何较新的版本。 'split'
选项无法识别,因此我正在寻找解决方法。 strsplit
命令似乎不允许对字符串参数使用fgetl(fid)
,如下所示:
myVar = strsplit(fgetl(fid), "\s*", "delilmetertype", "regularexpression")
在这种情况下还有其他可行的方法吗?
答案 0 :(得分:0)
regexp
函数确实支持'match'
输出类型,甚至返回到Octave版本3.4。因此,不要使用空白模式(\s+
)作为分隔符,而使用regexp
返回任意数量的非空白字符(\S+
)的匹配项列表。
例如
str = 'This is a string with some space characters';
m = regexp(str, '(\S+)', 'match')
'match'
选项与第四个位置返回值相同,因此以下等效调用也适用
[~, ~, ~, m] = regexp(str, '(\S+)')