我有:
s = '00755C100002';
试图获得
m = '755C100';
我可以丢弃最后3位数字和1位初始值0,但不能丢弃所有最初的0位数:
regexp(s,'(?!^0*)\w*(?=\d{3}$)','match','once')
ans =
'0755C100'
答案 0 :(得分:2)
regexp
尝试使用:
regexp(s, '[^0]+?(\w*?)(?=\d{3}$)', 'match', 'once')
(?=\d{3}$)
- >期待(?=
)
最后\d{3}
$
[^0]+?
- >发现非贪婪?
一个或多个1
非零[^0]
(\w*?)
- >匹配(
)
非贪婪?
零个或多个*
个字符\w
答案 1 :(得分:0)
比@Nick's answer简单一点你可以找到第一个非零字符并从那里贪婪地继续
regexp(s,'[^0]\w*(?=\d{3}$)','match','once')
[^0]
找到第一个非零字符(?=\d{3}$)
跳过最后三位数字\w*
捕获了介于两者之间的所有内容