- important: . does NOT match the period character, but in fact it matches any character. To only match the period, you need to escape it: \.
- \d matches any digit, and is simpler than writing [0-9]
- by making the decimal fraction optional my answer will also match integer values
using regexp with negative and positive floating numbers
49 次查看(过去 30 天)
显示 更早的评论
data =
'0.00640869<'
'0.00640869<'
'-0.00598145'
'-0.00598145'
'-0.0010376<'
'-0.0010376<'
'-0.00604248'
'-0.00213623'
'0.00567627<'
'-0.00219727'
'0.00567627<'
% 11x1 cell
to remove the non-numeric character;
data_num = regexp(data,'[0-9]+.[0-9]+', 'match');
In this case, negative signs (-) are also removed. How can I modify this code to get - signs?
0 个评论
采纳的回答
Stephen23
2017-5-24
编辑:Stephen23
2017-5-24
regexp(data,'[+-]?\d+\.?\d*', 'match');
Notes:
Read the MATLAB documentation for more information:
You might also like to try my FEX submission, which lets you experiment with regular expressions and see their output in real time (as you type):
5 个评论
Stephen23
2017-5-24
编辑:Stephen23
2017-5-24
@Walter Roberson: the tests I just ran showed that your code is actually slightly slower (1e5 iterations):
Elapsed time is 3.67537 seconds. % \.?\d*
Elapsed time is 3.91039 seconds. % (\.\d*)?
I have no idea how TMW implements this, or whether it would be stable between versions...
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!