正则表达式字母数字字符串丢弃最后3位数字,最终为0

时间:2013-10-15 15:02:06

标签: regex matlab

我有:

s = '00755C100002'; 

试图获得

m = '755C100';

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

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

2 个答案:

答案 0 :(得分:2)

regexp尝试使用:

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

(?=\d{3}$) - >期待(?= )最后\d{3}

的3位$

[^0]+? - >发现非贪婪?一个或多个1非零[^0]

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

答案 1 :(得分:0)

@Nick's answer简单一点你可以找到第一个非零字符并从那里贪婪地继续

regexp(s,'[^0]\w*(?=\d{3}$)','match','once')
  • [^0]找到第一个非零字符
  • (?=\d{3}$)跳过最后三位数字
  • \w*捕获了介于两者之间的所有内容