我有:
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*捕捉介于两者之间的一切