Extract only numbers from a text file

I have a text file that contains a series of lines where each line is of the following form: s.CircleByCenterPerimeter(center=(9.7593, 11.2643), point1=(9.8851, 11.2643))
I would like to extract just the first and third numbers from this line of text, and therefore from each line in the text file.
I tried a couple of things using textread(), but I couldn't figure out how to do it.
Any input would be much appreciated. Thank you

 Accepted Answer

Paolo
Paolo on 12 Jul 2018
Edited: Paolo on 12 Jul 2018
str = 's.CircleByCenterPerimeter(center=(9.7593, 11.2643), point1=(9.8851, 11.2643))';
regexp(str,'(?<=\()-?\d+\.?\d+','match')
For your text file:
raw = fileread('yourfile.txt');
data = regexp(raw,'(?<=\()-?\d+\.?\d+','match')
data = reshape(data,2,[]);

7 Comments

That did it!! Thank you so much Paolo.
You are welcome :)
Just one last question, it seems like if those two numbers were negative, the output is empty. I tried the following line, and the result was an empty cell.
s.CircleByCenterPerimeter(center=(-11.7509, 5.2936), point1=(-11.6094, 5.2936))
I've updated the answer. Also note that if you need to do numerical calculations with the data you will need to convert data to double using str2double.
Awesome, that worked. Yes, I will need to subtract the two numbers, and the result represents the radius of the circle.
Hi again. What if I wanted one the two remaining numbers too ?
Which of the two? :)

Sign in to comment.

More Answers (1)

You could include the other two numbers as well:
regexp(str, '\d+?\.?\d+(?=))|(?<=\()\d+\.?\d+' , 'match')
ans =
1×4 cell array
{'9.7593'} {'11.2643)'} {'9.8851'} {'11.2643)'}

Categories

Asked:

on 12 Jul 2018

Answered:

on 1 Dec 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!