To complete the other answers, this is a schematic description of what is happening:
str | pattern | state | description
------ + ---------------------- + ----------- + -------- ---------------------------------
abcd | ^(\pL+)(?:bcd|cd|d)$ | SUCCESS | all letters are matched by \pL+ (greedy)
abcd | ^(\pL+)(?:bcd|cd|d)$ | FAIL | there is no more character
abcd | ^(\pL+)(?:bcd|cd|d)$ | FAIL | idem
abcd | ^(\pL+)(?:bcd|cd|d)$ | FAIL | idem
abcd | ^(\pL+)(?:bcd|cd|d)$ | BACKTRACK | \pL+ give one character back
abcd | ^(\pL+)(?:bcd|cd|d)$ | FAIL | characters mismatch
abcd | ^(\pL+)(?:bcd|cd|d)$ | FAIL | idem
abcd | ^(\pL+)(?:bcd|cd|d)$ | SUCCESS |
abcd | ^(\pL+)(?:bcd|cd|d)$ | SUCCESS |
, - , .
. . " " . , bcd, regex, , b .
2: bcd cd .