对于糟糕的头衔感到抱歉,但这很难总结。
所以,我们假设我有以下数据:
123
1 2 3
12 3
1 2 3
1 23
1
,2
和3
可以替换为任何数字(\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}
答案 0 :(得分:4)
试试这个正则表达式
正则表达式: (?:\d\s*){3}
<强>解释强>
(?:\d\s*)
将匹配digit
后跟zero
个或更多空格,使用{3}
将重复3次。的 Regex101 Demo 强>
P.S:您接近解决方案。您应该使用捕获组()
而不是字符类[]
。
字符类的作用是选择一个提到的字符。