考虑接下来的两个脚本:
str1='N.KABALA.150.5.L12.5'
str2='N.C.CL.15.N12.5'
我想存储这些字符串的最后一部分(即'L12.5'和'N12.5')
我已经尝试过以下regexp
命令:
str1(regexp(str1,'L\d'):end)
但它区分大小写(即取决于字母“L”)
这不适用于str2
(相关字母为“N”)
我想从右到左读取字符串,而不是。
这可以在matlab中使用吗?
答案 0 :(得分:1)
Matlab确实有一个fliplr函数来翻转数组。
>> fliplr(str1)
ans =
5.21L.5.051.ALABAK.N
>> fliplr(str2)
ans =
5.21N.51.LC.C.N
此外,如果它始终是您所追求的最后5个字符,则可以使用结束索引:
>> str1(end-4:end)
ans =
L12.5
>> str2(end-4:end)
ans =
N12.5
答案 1 :(得分:1)
首先获取.
字符的索引,并从第二个到最后一个.
获取字符串到字符串的末尾:
str1 = 'N.KABALA.150.5.L12.5';
I = regexp(str1, '\.');
str1( I(end-1)+1:end )
>> ans = L12.5
str2 = 'N.C.CL.15.N12.5';
I = regexp(str2, '\.');
str2( I(end-1)+1:end )
>> ans = N12.5
答案 2 :(得分:0)
以下正则表达式匹配每个带或不带小数点的数字,前面带有小写或大写字母,并且位于被测字符串的末尾。
str1='N.ELBETI.150.L10';
str2='N.C.CL.15.N12.5';
expr = '[a-zA-Z](\d+\.?\d?)$';
sut = str2; % string under test
[s,e,t, m] = regexp(sut,expr);
% The matched string:
m
% Only the number:
pos = t{1};
num1 = str2double(sut(pos(1,1):pos(1,2)))