使用matlab中的regexp从txt文件中提取数据

时间:2014-06-17 21:08:14

标签: regex matlab

我需要使用regexp从文件中提取一些信息:

##FileName = disp_20120803_064635_1
#Plane1
x1 = 10008  x2= -9991  x3= -9991
y1 = 137  y2 = 10  y3 = 158
z1= 844  z2= 779  z3 = 700

#Plane2
x1 = -16 x2= 193  x3= 320
y1 = -4472  y2 = -556  y3 = 5143
z1= 3215  z2= -1309  z3 = 370

#Plane3
x1 = -8145  x2= 5387  x3= 8070
y1 = -4808  y2 = 7643  y3 = 3051
z1= 4212  z2= 4120  z3 = -4176


##end
  
    

我想通过以下代码提取文件名:

  
buffer  = fileread('test.txt') ; 
pattern = '##FileName\s=\s+(\w+?\d+)';
tokens  = regexp(buffer, pattern, 'tokens');
fileName = [tokens{:}]

但结果只是disp_20120803,这不是完整的文件名吗?

任何帮助?

1 个答案:

答案 0 :(得分:0)

请改用此模式:

pattern = '##FileName\s=\s+(\w+)';

编辑:

我不知道matlab语法,但您可以使用以下正则表达式来捕获变量名称及其值:

pattern = '([xyz][123])\s*=\s*(-?\d+)'

变量名称在组1中,其值在组2中。