从字符串中捕获前 4 个数字的正则表达式

问题描述 投票:0回答:1

正在使用正则表达式来更好地学习它,想知道我们是否可以编写正则表达式来匹配下面的用例

字符串:1_234_3456_345

预期结果:我想使用正则表达式仅匹配该字符串的前 4 个数字。意思就是 1234,忽略中间的下划线。

另一个示例字符串:123_7689_54A

预期结果:1237(仅应匹配字符串中的前 4 个数字,忽略它们之间的字符)

我尝试过这样的事情:

/\d.?\d.?\d.*?\d/

但是在上面的例子中:(第一个)和第二个

123_7
我希望它省略之间的
_
。我该怎么办?首先这可能吗?

ruby-on-rails regex ruby
1个回答
0
投票

试试这个:

(?:\d|_(?=\d)){4}

简短说明:

数字或下划线+数字四次。

解释长:

(?: ... )
是非捕获群。

\d
匹配任何数字。

|
是交替运算符,意思是“或”。

_(?=\d)
仅当下划线后跟数字时才匹配下划线(使用正向先行断言)。

{4}
量词指定前面的组应该精确匹配四次。

© www.soinside.com 2019 - 2024. All rights reserved.