私は持っている:
s = '00755C100002';
取得しようとしています
m = '755C100';
最後の 3 桁と 1 つの最初の 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 つ以上の1
非ゼロを見つけます[^0]
(\w*?)
(
)
-->非貪欲な?
0 個以上の*
単語文字に一致\w
@ニックの答えよりも少し単純です最初のゼロ以外の文字を探して、そこから貪欲に続けることができます
regexp(s,'[^0]\w*(?=\d{3}$)','match','once')
[^0]
最初の非ゼロ文字を見つけます(?=\d{3}$)
最後の 3 桁をスキップします\w*
間のすべてをキャプチャします