2

我有:

s = '00755C100002'; 

试图得到

m = '755C100';

我可以丢弃最后 3 位数字和一个初始 0,但不能丢弃所有初始 0:

regexp(s,'(?!^0*)\w*(?=\d{3}$)','match','once')
ans =
    '0755C100'
4

2 回答 2

2

regexp尝试使用总是很有趣:

regexp(s, '[^0]+?(\w*?)(?=\d{3}$)', 'match', 'once')

(?=\d{3}$)--> 期待结尾(?= )的 3 位数字\d{3}$

[^0]+?--> 找到非贪婪?的一个或多个1非零[^0]

(\w*?)--> 匹配( )非贪婪的?零个或多个*单词字符\w

于 2013-10-15T15:11:55.230 回答
0

@Nick 的回答简单一点您可以寻找第一个非零字符并从那里贪婪地继续

regexp(s,'[^0]\w*(?=\d{3}$)','match','once')
  • [^0]找到第一个非零字符
  • (?=\d{3}$)跳过最后三位数字
  • \w*捕捉介于两者之间的一切
于 2013-10-15T15:38:39.777 回答