Let's look at quantification, and how it can be used to find repeating characters.
Quantification is searching for sequences. A quantifier is a notation that specifies the number of possible repetitions of a character, a group of characters, or character class in a regular expression before it.
Let's see what all this means and look at an example with the simplest quantifier ?
, which means “search for matches that repeat zero to one time”:
/colou?
/
colr, colo
r, colou
r, colou
ur, colou
uur
Since there is no grouping or character class in this expression, the quantifier ?
pecifies a number of repetitions for the character u
and means that the character u preceding it will either not participate in the match (that is, “will be repeated zero times”) or will participate once without being repeated (i.e., “will be repeated once”). The result is four matches.
And in this example, we'll add the character r
to the pattern string. This will only give us two matches:
/colou?r
/
colr, color
, colour
, colouur, colouuur
We're using grouping and a character class, and now we have different matches. With groups, it checks for occurrences of the entire group 0 or 1 time. With character classes, it checks for occurrences of one of the characters (but not all at once) 0 or 1 times.
/col(ou)?r
/
colr
, color, colour
, colouur, colouuur
/col[ou]?r
/
colr
, color
, colour, colouur, colouuur
Another often-used quantifier is the +
character. It means that the character, the group, or the character class preceding it must be repeated at least once. This is what happens. The word color
is no longer juxtaposed here:
/colou+r
/
colr, color, colour
, colouur
, colouuur
The character *
indicates either no repetition or multiple repetitions, giving us a match in all substrings:
/colou*r
/
colr, color
, colour
, colouur
, colouuur
There are also more precise quantifiers, which are written in curly brackets {}
. You just need to enter the number of repetitions you need in them:
/colou{2}r
/
colr, color, colour, colouur
, colouuur
In addition, you can enter a range of repetitions in curly brackets {}
. For example, from two to three:
/colou{2,3}r
/
colr, color, colour, colouur
, colouuur
If we don't enter a number for the upper bound of the range, there won't be a maximum number of repetitions.
/colou{1,}r
/
colr, color, colour
, colouur
, colouuur
, colouuuur
, colouuuuur
The Hexlet support team or other students will answer you.
A professional subscription will give you full access to all Hexlet courses, projects and lifetime access to the theory of lessons learned. You can cancel your subscription at any time.
Programming courses for beginners and experienced developers. Start training for free
Our graduates work in companies:
From a novice to a developer. Get a job or your money back!
Sign up or sign in
Ask questions if you want to discuss a theory or an exercise. Hexlet Support Team and experienced community members can help find answers and solve a problem.