2016-07-15 117 views
1

假設我有這樣的字符串:正則表達式匹配2個或多個數字字符串中的

ABC-L-W7P-1423 
ABC-L-W7E-87 
CH-L-W7-756 

我需要搶號結尾。該數字可能是2,3或4位數字。但目前我所擁有的是:

=REGEXREPLACE(B2,"[^0-9]","") 

哪個當然也抓住了'W7P''我不想要'的'7'。 編輯:

我還需要匹配是這樣的:

CH-M-311-MM 

所以總是有2,3或4(或5)位數字,但我需要排除個位數。

+1

'= REGEXREPLACE(B2,「[0-9] {2,4} $」,「」)' – anubhava

+0

這個作品 - 謝謝 - 但我已經添加了新的信息。我需要的號碼在字符串的末尾不是必須的。 – daninthemix

+1

用'\ b [0-9] {2,4} \ b'嘗試'= REGEXEXTRACT':'= REGEXEXTRACT(B2,「\ b [0-9] {2,4} \ b」)' –

回答

1

您可以使用=REGEXEXTRACT\b[0-9]{2,4}\b

=REGEXEXTRACT(B2, "\b[0-9]{2,4}\b") 

regex demo

詳細

  • \b - 領先字邊界
  • [0-9]{2,4} - 2到4位
  • \b - 尾字邊界

如果您的2-4位總是以-開頭,您可以使用

=REGEXREPLACE(B2,"^.*-([0-9]{2,4})\b.*","$1") 

this regex demo

詳細

  • ^ - 串
  • 開始
  • .*- - 任何0+字符,直到最後-後跟有...
  • ([0-9]{2,4}) - (第1組以$1在替換模式) - 2到4位
  • \b - 尾隨字邊界
  • .* - 高達字符串的末尾任何字符。
-1

我不確定您使用的是哪種語言,但是如果它支持lookaround,則可以聲明左側有-(破折號)。

(?<=-)\d+ 

參見:https://regex101.com/r/sI9zR9/1

+0

RE2正則表達式庫不支持lookarounds。即使是前瞻('(?!...)') –

相關問題