regex - matlab - 从(奇数)字符串中提取数字

标签 regex matlab

我在 cvs 文件中有一系列字符串,它们看起来都像下面两个:

7336598,"[4125420656L, 2428145712L, 1820029797L, 1501679119L, 1980837904L, 380501274L]"
7514340,"[507707719L, 901144614L, 854823005L]"
....

如何提取其中的数字? 如...检索 7336598、4125420656 等....

尝试了 textscanregexp,但不太成功...

抱歉初学者的问题...感谢您的浏览! :)

编辑:每行的大小是可变的。

最佳答案

您可以使用 textreadregexp仅从 CSV 文件中提取数字:

C = textread('file.cvs', '%s', 'delimiter', '\n');
C = regexp(C, '\d+', 'match'); 

正则表达式非常简单。在MATLAB的regexp模式中,\d表示一个数字,+表示这个数字必须至少出现一次。 match 模式告诉 regexp 返回匹配的字符串。

结果是 cell array字符串。您可以更进一步,将字符串转换为数值:

C = cellfun(@(x)str2num(sprintf('%s ', x{:})), C, 'Uniform', false)

结果仍然存储在元胞数组中。如果可以保证每行中的数值数量相同,则可以将元胞数组转换为矩阵:

A = cell2mat(C);

关于regex - matlab - 从(奇数)字符串中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14549664/

相关文章:

objective-c - NSPredicate 和简单的正则表达式问题

javascript - 检查 Steam 配置文件 url 是否有效

matlab - 向量化嵌套的 for 循环和 if 语句

c++ - 将 C++ 连接到 Matlab 进行绘图

python - 在 matplotlib 中绘制彩色立方体

c++ - C++ 方法和类的正则表达式

C# 正则表达式查找和替换只有大写字符的链接并且不匹配排除项

matlab - 什么是作为索引值无效的复杂标量类型

c# - 如何在 C# 中将文本转换为超链接?

matlab - 使用 Matlab 保存函数将变量迭代保存到文件