正则表达式匹配字符串中的 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+
您可以将 =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.*","")
详情:
^
- 字符串开头
.*-
- 任何 0+ 个字符,直到最后一个 -
后跟...
([0-9]{2,4})
-(第 1 组在替换模式中用 </code> 表示) - 2 到 4 位数字</li>
<li><code>\b
- 尾随单词边界
.*
- 到字符串末尾的任何字符。
假设我有这样的字符串:
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+
您可以将 =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.*","")
详情:
^
- 字符串开头.*-
- 任何 0+ 个字符,直到最后一个-
后跟...([0-9]{2,4})
-(第 1 组在替换模式中用</code> 表示) - 2 到 4 位数字</li> <li><code>\b
- 尾随单词边界.*
- 到字符串末尾的任何字符。