我有一个似乎无法解决的正则表达式问题。我实际上不知道正则表达式是否可以做到这一点,但我需要在模式结束时匹配一系列字符n次。 例如。 blahblah [A-Z] {N} 问题是任何符合结束范围的字符都需要完全相同。
例如,我想匹配
但不是
是否有一些正则表达式可以做到这一点?
答案 0 :(得分:22)
您可以使用此模式:blahblah([A-Z])\1+
\1
是对第一个捕获组的反向引用,在本例中为([A-Z])
。并且+
将匹配该字符一次或多次。要限制它,您可以使用+
将{n}
替换为特定重复次数,例如\1{3}
将与之匹配三次。
如果您需要匹配整个字符串,请确保分别以^
作为前缀,并以$
结尾,以便模式变为^blahblah([A-Z])\1+$
您可以阅读有关back-references here的更多信息。
答案 1 :(得分:3)
在大多数正则表达式实现中,您可以通过引用正则表达式中的捕获组来实现此目的。对于您的示例,您可以使用以下内容来匹配相同的大写字符五次:
blahblah([A-Z])\1{4}
请注意,要匹配正则表达式n
次,您需要使用\1{n-1}
,因为一次匹配将来自捕获组。
答案 2 :(得分:1)
blahblah(.)\1*\b
应该适用于几乎所有语言版本。 (.)
抓取其中任何一个,然后\1*
匹配任意次数(第一个匹配)。
答案 3 :(得分:0)
blahblah([A-Z] | [a-z])\ 1+ 这应该有帮助。