Regex 使用[]-仅第一部分X匹配次数(使用{})
很抱歉标题不好,但这很难概括 那么,假设我有以下数据:Regex 使用[]-仅第一部分X匹配次数(使用{}),regex,Regex,很抱歉标题不好,但这很难概括 那么,假设我有以下数据: 123 1 2 3 12 3 1 2 3 1 23 1、2和3可替换为任何数字(\d) 我需要匹配所有只使用正则表达式的人,我想知道这是否可能(顺便说一句,这是一个假设的情况,所以不必担心语言或者我为什么需要它) 为了匹配第一种情况,123,我可以使用以下正则表达式:\d{3}。现在,如果我想包含匹配的空格,并且整个内容是3位/字母长的,我可以使用[\d\s]{3}。但是,这将匹配第一种情况,但为了匹配第二种情况,我必须将其更改为[
123
1 2 3
12 3
1 2 3
1 23
1
、2
和3
可替换为任何数字(\d
)
我需要匹配所有只使用正则表达式的人,我想知道这是否可能(顺便说一句,这是一个假设的情况,所以不必担心语言或者我为什么需要它)
为了匹配第一种情况,123
,我可以使用以下正则表达式:\d{3}
。现在,如果我想包含匹配的空格,并且整个内容是3位/字母长的,我可以使用[\d\s]{3}
。但是,这将匹配第一种情况,但为了匹配第二种情况,我必须将其更改为[\d\s]{5}
我想要的是能够选择要重复的次数(在本例中,{3}
),但是在数字之间要有任意数量的空格
我可以使用\d\s*\d\s*\d\s*
,但效率很低。使用[\d\s*]{3}
也不起作用,原因与上述相同
也许使用捕获组是可能的,希望您能看到我想要得到的:
[(\d)\s*]$1{3}
试试这个正则表达式
正则表达式:(?:\d\s*){3}
说明:
将匹配任何(?:\d\s*)
,后跟数字
或更多空格,使用零
将重复3次{3}
()
,而不是字符类[]
字符类所做的是从所提到的字符中选择一个。您应该注意,
*
在字符类中丢失了它的元字符函数,只是字面上匹配,所以[\d\s*]
匹配1个空格或1个数字或1*
@SebastianProske是的,我知道,它只是展示了我想要达到的目标。我现在编辑并放置()
,谢谢!你的编辑让事情变得更糟——括号在chracter类中没有元字符函数。只有-
用作范围,而^
用作否定(如果放在开头)@SebastianProske谢谢,我没有意识到这一点。我将撤消它。这是对第一个捕获的组的反向引用,再次匹配它的内容。您可以跳过捕获部分,只需使用(?:\d\s*){3}
@Alec:可以,但我们这里的反向引用不会用完。无论如何,谢谢你的建议。虽然你很可能不会注意到正常情况下的差异,但不捕捉可能会稍微快一点use@Alec:如果你这么说的话。完成!谢谢,我早该想到的!