It resembles a ternary operator from programming languages and looks like this:
Let's look at an example of how it works:
We see outside brackets with
?, and inside are two separate expressions:
- The first is the condition
(?<=a), which checks if the character on the left matches
- Next comes the alternative, and we choose between
pdepending on whether the condition worked or not.
You can describe this construction as follows: “Find all instances of
m that are preceded either by an
a or by a
p preceded by no
Let's break down the search in our string character by character:
- the condition is checked to see if the current character is
acomes before it. Since the condition hasn't been met, it'll attempt to extract
p, which is also not the current character;
- the second
adoesn't fit the conditions, the missing substring
- the third character
m, previously was
a— match was found;
- the fourth character
,does not fit the conditions, the missing substring
mam,, then it is checked
- the fifth character
pdoes not correspond to
am, but corresponds to
p— a second match is found;
- he sixth character
aagain triggers the check for the next character to match
- the seventh character
That's how we got two matches in the string as a result of the conditional search.
Are there any more questions? Ask them in the Discussion section.
The Hexlet support team or other students will answer you.
For full access to the course you need a professional subscription.
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.