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

RegEx to match 2 or more digits in a string

假设我有这样的字符串:

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)位数字,但我需要排除个位数。

我不确定你使用的是哪种语言,但如果它支持环视,你可以断言左侧有一个 -(破折号)。

(?<=-)\d+

参见:https://regex101.com/r/sI9zR9/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.*","")

this regex demo

详情:

  • ^ - 字符串开头
  • .*- - 任何 0+ 个字符,直到最后一个 - 后跟...
  • ([0-9]{2,4}) -(第 1 组在替换模式中用 </code> 表示) - 2 到 4 位数字</li> <li><code>\b - 尾随单词边界
  • .* - 到字符串末尾的任何字符。