正则表达式匹配字符串中的 2 个或多个数字

dan*_*mix 4 regex google-sheets re2 google-sheets-api

假设我有这样的字符串:

ABC-L-W7P-1423
ABC-L-W7E-87
CH-L-W7-756
Run Code Online (Sandbox Code Playgroud)

我需要抓住最后的号码。该数字可能是 2 位、3 位或 4 位数字。但目前我所拥有的是:

=REGEXREPLACE(B2,"[^0-9]","")
Run Code Online (Sandbox Code Playgroud)

当然,这也抓住了我不想要的“W7P”中的“7”。编辑:

我还需要匹配这样的东西:

CH-M-311-MM
Run Code Online (Sandbox Code Playgroud)

所以总是 2、3 或 4(或 5)位数字,但我需要排除个位数。

Wik*_*żew 6

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

=REGEXEXTRACT(B2, "\b[0-9]{2,4}\b")
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节

  • \b- 前导词边界
  • [0-9]{2,4}- 2 至 4 位数字
  • \b- 尾随字边界

如果您的 2-4 位数字前面始终带有-,您可以使用

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

请参阅此正则表达式演示

细节

  • ^- 字符串的开头
  • .*-- 任何 0+ 个字符,直到最后一个-,后面跟着...
  • ([0-9]{2,4})$1-(替换模式中提到的第 1 组) - 2 至 4 位数字
  • \b- 尾随字边界
  • .*- 直到字符串末尾的任何字符。