正则表达式匹配2个或多个数字字符串中的
问题描述:
假设我有这样的字符串:正则表达式匹配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)位数字,但我需要排除个位数。
答
您可以使用=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
- 尾随字边界 -
.*
- 高达字符串的末尾任何字符。
答
+0
RE2正则表达式库不支持lookarounds。即使是前瞻('(?!...)') –
'= REGEXREPLACE(B2,“[0-9] {2,4} $”,“”)' – anubhava
这个作品 - 谢谢 - 但我已经添加了新的信息。我需要的号码在字符串的末尾不是必须的。 – daninthemix
用'\ b [0-9] {2,4} \ b'尝试'= REGEXEXTRACT':'= REGEXEXTRACT(B2,“\ b [0-9] {2,4} \ b”)' –