How to make correct Regex?

2 vues (au cours des 30 derniers jours)
Nicholas Kavouris
Nicholas Kavouris le 19 Avr 2024
Commenté : Voss le 19 Avr 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 commentaire
Dyuman Joshi
Dyuman Joshi le 19 Avr 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.

Connectez-vous pour commenter.

Réponses (1)

Voss
Voss le 19 Avr 2024
Use 'tokens' instead of 'match'.
  1 commentaire
Voss
Voss le 19 Avr 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"

Connectez-vous pour commenter.

Catégories

En savoir plus sur Workspace Variables and MAT Files dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by