How can I extract multiple values after certain term with regexp?
Mostra commenti meno recenti
Hi, I am new to using regexp and was wondering how I can extract all 'channel' values in my txt file. A snippet of the file is as follows:
Set 1
Average: 0.976
Channels: 0.973 0.985 0.988 0.989 0.981 0.986 0.99 0.977 0.953 0.992 0.979 0.923
Set 2
Average: 0.983
Channels: 0.978 0.98 0.983 0.985 0.976 0.982 0.985 0.984 0.994 0.991 0.991 0.969
I've found that using the expression '(?<=Channels\D*)\d*\.?\d+\' obtains only the first value after the word channels, so how can I obtain all 12 values for each set of channels?
Thank you kindly in advance!
Risposta accettata
Più risposte (2)
Walter Roberson
il 7 Mar 2016
'(?<=Channels:\s+).+$'
together with the parameter 'dotexceptnewline'
fmt = ['Set%f\nAverage:%f\nChannels:',repmat('%f',1,12)];
fid = fopen('test.txt','rt');
M = cell2mat(textscan(fid,fmt));
fclose(fid);
It successfully reads all of the numeric data into one numeric matrix, much quicker than any solution using regexp would. I tested this code using your sample lines, saved into this file:
1 Commento
Dhani Dharmaprani
il 7 Mar 2016
Categorie
Scopri di più su Programming in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!