3

假设我有如下字符串:

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

4

2 回答 2

5

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

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

请参阅正则表达式演示

详情

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

如果您的 2-4 位数字总是以 开头-,您可以使用

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

看到这个正则表达式演示

详情

  • ^- 字符串的开始
  • .*-- 任何 0+ 字符,直到最后一个-,然后是...
  • ([0-9]{2,4})$1- (替换模式中提到的第 1 组) - 2 至 4 位
  • \b- 尾随单词边界
  • .*- 直到字符串结尾的任何字符。
于 2016-07-15T10:16:46.377 回答
-1

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

(?<=-)\d+

见:https ://regex101.com/r/sI9zR9/1

于 2016-07-15T10:15:34.240 回答