How to make correct Regex?
1 view (last 30 days)
Show older comments
I have an output log from a system which i am looking to capture data from. The data is found in the printout in the following phrase:
"actualIntensity: Optional(8.24%)". I would like to capture the 8.24 part of this phrase.
I have been using
regexp(text,'actualIntensity: Optional\(([0-9]*\.[0-9]+)\%)','match')
But this returns the entire phrase.
How can i modify this regex to only return 8.24, without all the other text?
1 Comment
Dyuman Joshi
on 19 Apr 2024
text is a built-in function. Naming variables (or scripts for that matters) using function names is not a good practice in MATLAB.
Best to change the variable name; a standard variable name in this context is txt.
Answers (1)
Voss
on 19 Apr 2024
Use 'tokens' instead of 'match'.
1 Comment
Voss
on 19 Apr 2024
txt = "actualIntensity: Optional(8.24%)";
% original but with 'tokens'
regexp(txt,'actualIntensity: Optional\(([0-9]*\.[0-9]+)\%)','tokens')
% original but with 'tokens','once'
regexp(txt,'actualIntensity: Optional\(([0-9]*\.[0-9]+)\%)','tokens','once')
% removing \ before % and combining the [0-9]
regexp(txt,'actualIntensity: Optional\(([0-9\.]+)%)','tokens','once')
% capturing anything between ( and %) in the input string
regexp(txt,'actualIntensity: Optional\((.*)%)','tokens','once')
See Also
Categories
Find more on Text Data Preparation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!