Regexp to pull numerics only
7 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Stephen23
2019 年 7 月 3 日
編集済み: Stephen23
2019 年 7 月 3 日
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).
採用された回答
Guillaume
2019 年 7 月 3 日
- \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.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!