Regexp to pull numerics only
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Stephen
el 3 de Jul. de 2019
Comentada: Stephen
el 4 de Jul. de 2019
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
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).
Respuesta aceptada
Guillaume
el 3 de Jul. de 2019
- \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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Characters and Strings en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!