Regexp to pull numerics only

I'm using regexp to pull a version number from a text file:
returned = string(regexp (filetext, '(?<=Version_String )[A-Z]*\d*.\d*.\d*.\d*', 'match'))
This returns a string
"YZ1.1.2.3"
which is good.
When I try and extract just the numbers and decimal point from this string with
version = regexp (returned, '\d*.\d*.\d*.\d*', 'match')
I get:
version = 1x2 string array "YZ1.1" ".2.3"
which is not what I was expecting. I was hoping for 1.1.2.3
Can someone explain why this is returned and possibly how to fix it please?
edit: Apologies to all, I missed the decimal points after the \d, I have corrected. I wrote this on my phone in my lunch break!

1 comentario

Stephen23
Stephen23 el 3 de Jul. de 2019
Editada: Stephen23 el 3 de Jul. de 2019
I don't see anything in any of your regular expressions that would match the points.
When I test your first example, I do not get the result that you have shown us:
>> S = 'A B C Version_String YZ1.1.2.3 X Y Z';
>> regexp(S, '(?<=Version_String )[A-Z]*\d*\d*\d*\d*', 'match')
ans =
'YZ1'
which is exactly what I would expect (as the matching fails at the first dot character).

Iniciar sesión para comentar.

 Respuesta aceptada

Guillaume
Guillaume el 3 de Jul. de 2019

0 votos

  • \d*\d*\d*\d* is exactly the same as \d*, match 0 or more digits. It probably would be better as \d+, match 1 or more digits
  • That regular expression cannot return anything with letters or dots in it, so it's clearly not what you are using.

1 comentario

Stephen
Stephen el 4 de Jul. de 2019
Yes, thank you, disregarding the errors I made when writing up the question, the problem was using * instead of +

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programming en Centro de ayuda y File Exchange.

Productos

Versión

R2019a

Etiquetas

Preguntada:

el 3 de Jul. de 2019

Comentada:

el 4 de Jul. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by