提取文本文件中的匹配字符串

时间:2016-01-26 18:27:09

标签: regex matlab

我有一个数据文件;

***************************
***************************
***************************  (header part)
*  2004 11  8  0  0  0.00000000
P  1  1000.4545  211.1214  54.5545 
P  3  5400.5454  1005.4545 -452.4899
P  4  ........   .........   .......
P  5  ........   .........  ........
.
.
*  2004 11  8  0 15  0.00000000
P  1  1085.4545  200.1214  54.5545 
P  3  5405.5454  1105.4545 -452.4899
P  4  ........   .........   .......
P  5  ........   .........   .......

文本文件中有几个“P 1”,“P 3”等。我需要定义所有“P [0-9]”的数字行,如;

P_1=[1000.4545 211.1214 54.5545;1085.4545 200.1214 54.5545];
p_3=[5400.5454 1005.4545 -452.4899;5405.5454 1105.4545 -452.4899];

哪些代码给了我这种灵活性?

1 个答案:

答案 0 :(得分:1)

将正则表达式与regexp一起使用。 如果您的数据在data.txt文件中

txt = fileread('data.txt')
parts = regexp(txt,'P\s*1\s*(\S*)\s*(\S*)\s*(\S*)','tokens')
P_1 = [reshape(str2double([parts{:}]),3,[])]'

如果你想在所有9个P的循环中执行此操作,我建议使用单元格而不是P_1 P_2等。您可以为{{构建表达式循环内部非常简单:

regexp