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