假设我有这样的字符串:
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)位数字,但我需要排除个位数。
最佳答案
您可以使用 =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
- 尾随词边界 .*
- 直到字符串末尾的任何字符。 关于正则表达式匹配字符串中的 2 个或多个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38393339/