2

私は持っている:

s = '00755C100002'; 

取得しようとしています

m = '755C100';

最後の 3 桁と 1 つの最初の 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 つ以上の1非ゼロを見つけます[^0]

(\w*?)( )-->非貪欲な?0 個以上の*単語文字に一致\w

于 2013-10-15T15:11:55.230 に答える
0

@ニックの答えよりも少し単純です最初のゼロ以外の文字を探して、そこから貪欲に続けることができます

regexp(s,'[^0]\w*(?=\d{3}$)','match','once')
  • [^0]最初の非ゼロ文字を見つけます
  • (?=\d{3}$)最後の 3 桁をスキップします
  • \w*間のすべてをキャプチャします
于 2013-10-15T15:38:39.777 に答える