多次匹配相同的未知字符

时间:2012-07-12 20:46:55

标签: regex

我有一个似乎无法解决的正则表达式问题。我实际上不知道正则表达式是否可以做到这一点,但我需要在模式结束时匹配一系列字符n次。 例如。 blahblah [A-Z] {N} 问题是任何符合结束范围的字符都需要完全相同。

例如,我想匹配

  • blahblahAAAAA
  • blahblahEEEEE
  • blahblahQQQQQ

但不是

  • blahblahADFES
  • blahblahZYYYY

是否有一些正则表达式可以做到这一点?

4 个答案:

答案 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+ 这应该有帮助。