Filter löschen
Filter löschen

How to make correct Regex?

1 Ansicht (letzte 30 Tage)
Nicholas Kavouris
Nicholas Kavouris am 19 Apr. 2024
Kommentiert: Voss am 19 Apr. 2024
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 Kommentar
Dyuman Joshi
Dyuman Joshi am 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.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Voss
Voss am 19 Apr. 2024
Use 'tokens' instead of 'match'.
  1 Kommentar
Voss
Voss am 19 Apr. 2024
txt = "actualIntensity: Optional(8.24%)";
% original but with 'tokens'
regexp(txt,'actualIntensity: Optional\(([0-9]*\.[0-9]+)\%)','tokens')
ans = 1x1 cell array
{["8.24"]}
% original but with 'tokens','once'
regexp(txt,'actualIntensity: Optional\(([0-9]*\.[0-9]+)\%)','tokens','once')
ans = "8.24"
% removing \ before % and combining the [0-9]
regexp(txt,'actualIntensity: Optional\(([0-9\.]+)%)','tokens','once')
ans = "8.24"
% capturing anything between ( and %) in the input string
regexp(txt,'actualIntensity: Optional\((.*)%)','tokens','once')
ans = "8.24"

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by