20

I have a regex problem I can't seem to solve. I actually don't know if regex can do this, but I need to match a range of characters n times at the end of a pattern. eg. blahblah[A-Z]{n} The problem is whatever character matches the ending range need to be all the same.

For example, I want to match

  • blahblahAAAAA
  • blahblahEEEEE
  • blahblahQQQQQ

but not

  • blahblahADFES
  • blahblahZYYYY

Is there some regex pattern that can do this?

Erin Aarested
  • 453
  • 1
  • 4
  • 11
  • See this question: http://stackoverflow.com/questions/7147810/regular-expression-same-character-3-times – Palladium Jul 12 '12 at 20:49

4 Answers4

32

You can use this pattern: blahblah([A-Z])\1+

The \1 is a back-reference to the first capture group, in this case ([A-Z]). And the + will match that character one or more times. To limit it you can replace the + with a specific number of repetitions using {n}, such as \1{3} which will match it three times.

If you need the entire string to match then be sure to prefix with ^ and end with $, respectively, so that the pattern becomes ^blahblah([A-Z])\1+$

You can read more about back-references here.

Ahmad Mageed
  • 94,561
  • 19
  • 163
  • 174
3

In most regex implementations, you can accomplish this by referencing a capture group in your regex. For your example, you can use the following to match the same uppercase character five times:

blahblah([A-Z])\1{4}

Note that to match the regex n times, you need to use \1{n-1} since one match will come from the capture group.

Andrew Clark
  • 202,379
  • 35
  • 273
  • 306
2

blahblah(.)\1*\b should work in nearly all language flavors. (.) captures one of anything, then \1* matches that (the first match) any number of times.

dlras2
  • 8,416
  • 7
  • 51
  • 90
0

blahblah([A-Z]|[a-z])\1+ This should help.