使用[]匹配 - 仅第一部分X次(使用{})

时间:2016-03-20 19:35:10

标签: regex

对于糟糕的头衔感到抱歉,但这很难总结。

所以,我们假设我有以下数据:

123
1 2 3
12 3
1  2  3
1  23

123可以替换为任何数字(\d

我需要使用RegEx来匹配所有这些,我想知道它是否可行(顺便说一下,这是一种假设的情况,因此无需担心语言或为什么我会要求这样做。)

为匹配第一个案例123,我可以使用此RegEx:\d{3}。现在,如果我想要包含匹配的空格,并且整个事情是3位数/字母长,我可以使用[\d\s]{3}。但是,这将匹配第一种情况,但为了匹配第二种情况,我必须将其更改为[\d\s]{5}

我想要的是能够选择重复的次数(在这种情况下,{3}),但是在这些数字之间应该有任意数量的空格。

我可以使用\d\s*\d\s*\d\s*,但效率非常低。使用[\d\s*]{3}也不起作用,原因与上述相同。

也许有可能使用捕获组,希望你能看到我想要的东西:

[(\d)\s*]$1{3}

1 个答案:

答案 0 :(得分:4)

试试这个正则表达式

正则表达式: (?:\d\s*){3}

<强>解释

  • (?:\d\s*)将匹配digit后跟zero个或更多空格,使用{3}将重复3次。

Regex101 Demo

P.S:您接近解决方案。您应该使用捕获组()而不是字符类[]

字符类的作用是选择一个提到的字符。